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

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

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

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

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

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

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

请问下,IPC 用 Socket 的多吗?是纯属他太菜,还是我水平不足??
14356 次点击
所在节点    程序员
137 条回复
GeekGao
85 天前
@blackstack 那你可以说出你的担忧啊,难道不给任何解释? 倘若真的不给解释就听领导的,留下变更文档/邮件,出事儿不要接锅就行了啊
blackstack
85 天前
@GeekGao 有道理,明天上班谈一下,如果听不进去,写封邮件说清楚不是我要这么做的。
blackstack
85 天前
@GeekGao 不过其实也没什么用,最终出现问题还是要让我来改。

之前就有个设计,我提出这个设计是不合理的,架构师又怼我说不要老想改需求。

我不得已按他们的设计方式实现了,结果到甲方那里演示人家也觉得这样不合理,得改回我原来的实现方式。

结果还是我来改,他们只要动嘴就好了。
povsister
85 天前
@blackstack #23
不要只把沟通停留在嘴上,留书面,给他发邮件讲清楚同时 cc 老板。凡事留个证据事后好甩锅。

看你俩一人负责一端的情况下,这么少沟通简直不可思议。他甚至还懒得给你解释技术方案,这种人一般要么是大佬脾气怪,要么就是菜逼只会抄。
bagel
85 天前
如果他用的是 tcp socket 开放端口,那就是菜逼无疑,曾经用这个的大厂 app 爆出过无数个漏洞。unix socket 在 Android 高版本收紧权限后可以用作 IPC ,但是也要实现对。Android 推荐的 IPC 机制是 binder ,如果不是跨端代码库显然应该用 binder 。
blackstack
85 天前
@bagel 就是 TCP Socket ,然后限制只能 127.0.0.1 的请求,至于有没有限制我还没仔细看他源代码不清楚
blackstack
85 天前
@povsister 明天还要讨论另外一个需求,会上再提一次,不行就是发邮件加抄送,发钉钉消息。
mainjzb
85 天前
还是 socket 好用,最近一年本打算用 flutter 和 go 之间用 pipe 通信,发现 2 个语言对 pipe 的封装都有些问题,各种功能残缺。最后还是用 http 了,没空在 ipc 上浪费时间
Mithril
85 天前
虽说想搞都能搞,但 np 还是要比 socket 安全一些的。毕竟不是什么扫个端口就能找到的东西。而且你想拦截消息也困难。
tool2dx
85 天前
选择 socket 本身并没有大问题,问题是强压方案的做法,让人挺不爽的。
defphilip
85 天前
没有跨平台的需求,那就肯定选命名管道,甚至有跨平台需求给我来做也做管道,socket 那么通用为什么 chromium 做 ipc 的 mojo 在 windows 上不用?

楼上很多人就是 linux 后台做多了把后台的想法照搬到客户端上,完全没考虑到 windows 的复杂环境下用户很有可能直接 127 都连不上(比如用户选择联网的时候误选了防火墙选项)。更别说你们是安全软件。这样相当于把后门给别人留足了。
defphilip
85 天前
用 scoket 写 ipc ,你写到倒是简单啊,有没有考虑过后续处理用户反馈的痛苦?

在我们这里的一个核心组件,为了照顾 android 要常驻后台,必须进程间通讯,并且为了跨平台,硬是把组件的调用方式改成了 socket (甚至 windows 都不是多进程的),天天都有用户反馈为什么这个有问题,那个有问题,一大半都是这个 socket 通信的问题
tyzandhr
85 天前
两个都不是最佳选项。Windows 上就用 com+,Android 上就用 binder ,这都是平台推荐的
ajaxgoldfish
85 天前
绝逼是只会 scoket ,像我一样
spartacussoft
85 天前
我觉得如果争用 socket 工具、还是 namedpipe 、unix domain socket 等工具,那是一点意思都没有。
这些工具无非是提供了流式传输的能力,他们本身都可以为你的应用程序流式传输数据。
理论上传输层从 tcp 变成 namedpipe ,或者从 namedpipe 变成 quic ,或者在既有的传输层套一层 TLS ,对你的应用层几乎没有影响才对,如果有影响,说明你们造的不是应用,而是想造传输工具(显然你们也不想造也造不出来吧)。
jorneyr
85 天前
标题的重点是 “架构师”,楼主的言外之意就是这水平也是架构师?那我也胜任架构师,领导没有眼光找的人什么水平,连我都不如。

讨论具体技术脱离了问问题的人的心理。
kxg3030
85 天前
本地使用 domain socket 也算是比较常见的处理方式了 管道一班不是父子进程用的比较多吗
dajj
85 天前
他官比你大,做决定不问你,你不服气。
这在职场很常见, 也许他擅长吹嘘,也许是他真有本事,但是不管怎么样,你不喜欢他。
我的建议是,别对公司投入太多感情, 你写代码就是为了挣钱过上好生活,公司的代码公司决定, 大不了你干不下去换个公司。以前你可能有个错觉,这块代码是你的一亩三分地,现在你应该明白了,这是公司的代码,不是你的。
lonelyparasol
85 天前
无论怎么说, 先撇清自己的责任, 别到时候背黑锅.
提安全意见抄送给领导, 让领导决定.
从技术上讲, socket 挺常见的, 而且也多平台通用, 安全防护 ssl 自己封装一下也可以啊, 做好限制我觉得没什么问题, 功能实现就行了。至于更改问题,我也觉得是另一个人不会用, 只会用 socket , 哈哈哈
wanguorui123
85 天前
考虑通用性还是选 Socket 吧

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

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

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

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

© 2021 V2EX