使用 socket 做进程间通信的架构师属于什么水平

86 天前
 blackstack
我们是做安全产品的厂商,最近一个客户端程序,有 Androd 和 Windows 两个平台。

架构师原先是做 Java 的,负责 Android 端的开发,我负责 Windows 端开发。

因为需要和其他程序通信,所以他选定的是 socket ,用于本地进程的进程间通信,这里没有任何跨操作系统和跨设备的通讯需求。

我在 Windows 端用的是命名管道,现在强压我要改成 Socket 。

改 Socket 是没什么难度,但是被强制往自己的代码里糊屎非常难受。

Socket 他还没做任何权限认证,也就是本地的任何线程,不管是其他合法进程还是木马病毒,都可以给它的 Socket 端口发消息,只要格式正确它都会执行。

请问下,IPC 用 Socket 的多吗?是纯属他太菜,还是我水平不足??
14362 次点击
所在节点    程序员
137 条回复
blackstack
85 天前
@DefoliationM 不是,Android 上是其他厂商和我们的程序通信,Windows 上也是如此。
Chinsung
85 天前
强行要定规范改方案的,如果你质疑,他提不出什么理由,那大概率他只是按照自己以往的经验,或者他只知道这种方式,并且他也没想清楚这种方式的意义
哪怕他只是说:“安全性低点后面再加密,socket 扩展性好。”能说出这种,也算是对方案有自己考虑的,不管方案对错。
不解释的在哪都令人讨厌,无非就是那套官威罢了
erquren
85 天前
gRPC 呢
Fca
85 天前
用 DDS 吧
jackerbauer
85 天前
thrift 或者 grpc 感觉都行
loveyu
85 天前
@pagxir 妈妈。。。 不
woodfizky
85 天前
不说技术,感觉你们技术方案的设计和确定上缺少流程这个问题更致命。
需求文档设计文档没有的话,后续很容易出问题。

而没文档能反映出很多管理上的问题。
zzzyk
85 天前
我这边的项目用的进程间通信基本都是 domain socket 。。。。
mooyo
85 天前
用 socket 有啥问题
kxg3030
85 天前
@blackstack 管道一般在父子进程用的比较多 不同进程用 socket 比较多
changnet
85 天前
socket 应该是更通用,应用更广的 ipc 通信方式,一个是各个系统都能用,一个是扩展性好,改成跨机器也方便。在支持 socketpair 的系统上,趁手的很,再不济走回环性能也没比 pipe 差到哪去。

socket 可以和 poll 、epoll 之类的共用,win 的 pipe 却不行,在服务器端几乎是必选

不过你这是安卓和 win 的话,情况大不一样。因为 win 不支持 socketpair ,它的 pipe 接口和 linux 的也不一样,要么各个平台代码分开,那么 pipe 在 win 平台确实简单一些。可如果要统一代码,那只能改成 tcp socket 之类两个平台都有的东西。

至于安全性,这两个本身都没有安全性啊(如果非得说别人攻击时,肯定会首先扫端口,那 tcp 确实更容易暴露)。pipe 本身它也不知道另一端是哪个程序,要做安全还得在数据通信里做。
asuraa
85 天前
本地 socket 不是很常见吗? 本地回环很快的
sthwrong
85 天前
本机 socket ,别想太多,能扫你本机 socket 的啥不能干?一定要做安全也只能通信本身处理。
xsi640
85 天前
还是看业务场景。。。
RightHand
85 天前
好奇 socket 除了 op 说的验证问题还有什么缺点?
k9982874
85 天前
*nix 用 socket 没啥毛病,win 我会选 shared memory
hxysnail
85 天前
我支持架构师,用 socket 就为以后可能的跨操作系统跨设备留好扩展空间,用管道就局限在本机这一亩三分地……
架构师不仅仅要实现眼前的需求,还要有点想象力,俗称 [规划] 。
至于安全认证,那是另一个问题。
zihuyishi
85 天前
这种不是直接上 grpc 就行了,简单通用还好写。不过 socket 也没啥毛病吧,以后 android 和 windows 搞不好还要互相通信呢,走网络栈怎么想都是比较稳妥的做法。
benzalus
85 天前
看下来非技术之争,乃话语权之争
googleaccount
85 天前
我之前做 Windows 客户端也用过 Socket ,后来发现用户那边会遇到一些离奇 bug ,后面改用命名管道了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1075187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX