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

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

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

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

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

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

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

请问下,IPC 用 Socket 的多吗?是纯属他太菜,还是我水平不足??
13740 次点击
所在节点    程序员
137 条回复
pagxir
53 天前
难道你没用过 pf_unix ,我是觉得你菜点。另外,Android 上因为 sepolicy 关系,所有 IPC 在不存在父子关系的进程间几乎不可用。所以规范做法就是用 binder/aidl ,至于 Windows 就随便
BD8NCF
53 天前
IPC 用 Socket 的很多
bloceanc
53 天前
问问他的理由
mioktiar56
53 天前
服务器上用 socket 没话说,但涉及到客户端的,如果还用 socket 的,可能就不太合适了。

之前项目没时间自己写 rpc 框架,用的 thrift ,遇到了一些问题,比如:
端口被占用情况;
端口假可用性的情况;

后面自己花时间写了个基于共享内存的 rpc 框架,总算解决了那些问题。

OP 可以看看 https://github.com/winsoft666/veigar
nagisaushio
53 天前
用 socket 不是很常见
bloceanc
53 天前
用 Socket 还是 FIFO 或者 UNIX socket 或者 loopback 或者 shared memory 在很多情况下区别不大,这时候主要是看习惯和可维护性
iceheart
53 天前
移植方便,是不是有系统迁移的需求?
zsxzy
53 天前
用 Socket 更方便跨平台.. 编程也更简单.. 现在 win 也支持 AF_unix
wshcdr
53 天前
用套接字就是繁琐点,累一点
shijingshijing
53 天前
pf_unix 本机 localhost 通讯也是走内核,而且数据不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答。支持 stream 和 datagram 两种方式,使用 stream 方式也能保证 reliablity ,数据完整性和收发次序和 TCP 一样能保证。
缺点是数据还是要经历从一个应用拷贝到另一个应用的开销。
GeekGao
53 天前
我品出来一种味道:你先是质疑他的能力,然后在收集证据验证自己的猜测。你拿出的证据之一就是本帖。
blackstack
53 天前
@iceheart 没有迁移的需求,都是原生开发
blackstack
53 天前
@bloceanc 没有理由,他写的就是标准和规范。
ecloud
53 天前
Unix socket 本来设计出来就是干这个用的啊,tcp/ip 的那版只是一个衍生品
blackstack
53 天前
@GeekGao 并不是,最初这个项目只有我一个人在开发,后面他参与进来,就必须用他的标准来做。

我用 Named Pipe 在前,他定义规范在后,然后要求我按他的规范重新改。

并且改的理由就是遵守规范,规范是他定的。

这种事情不是一次两次,比如后端接口有个参数,他不需要,出于节约流量的目的,就让后端删了,从来没和我沟通过这参数我是不是在用,只能我去适配他的修改。
blackstack
53 天前
@pagxir Android 开发不太了解,他也是第一次写,Binder 也不是 Socket 吧?
blackstack
53 天前
@ecloud 了解了,感谢。
GeekGao
53 天前
@blackstack 哈哈, 那你可以多问问他 why ,请教他不这么改会发生什么、改后会产生什么新的问题
MoYi123
53 天前
用 socket 不是挺常见的?
搞个 interface 换一个传输方式也就 100 行代码吧.
blackstack
53 天前
@GeekGao
没啥用,问一下就说不想这么改就去找领导说。
领导不太懂技术,我提了我的看法,结果就是一句按标准做,详细的先不谈了,我详细说了我的担忧,结果不回消息了。

socket 我最担忧的没有添加验证手段,验证请求的合法性。
如果是恶意程序发送的 socket 请求也无法区分。

我们做的是安全产品,如果连自身安全都确保不了,怎么卖给客户?

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

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

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

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

© 2021 V2EX