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

2024-09-23 20:56:47 +08:00
 blackstack
我们是做安全产品的厂商,最近一个客户端程序,有 Androd 和 Windows 两个平台。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

https://ex.noerr.eu.org/t/1075187

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

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

© 2021 V2EX