对于系统socket和第三方的socket调用方,为什么要以文件的形势呢? 直接用扩展实现socket不行吗?

2013-08-23 12:06:01 +08:00
 fucktwice
php5-fpm.sock 这是一个sockect文件?
了解socket的建立过程,但是为什么把socket当作一个文件呢?

对于系统socket和第三方的socket调用方,为什么要以文件的形势呢?
直接用扩展实现socket不行吗?
2821 次点击
所在节点    问与答
6 条回复
phuslu
2013-08-23 12:11:52 +08:00
linux 支持 abstract socket, 可以代替 .sock 文件。
BOYPT
2013-08-23 12:55:49 +08:00
“一切皆文件”是Unix哲学之一。

php5-fpm.sock只是一个符号,并不会有任何数据经过磁盘。这样一个符号是建立 userspace<->kernelspace<->userspace 这样的管道的传统方式,这样的实现有利于在unix系系统里面实现跨平台。
fucktwice
2013-08-23 12:59:37 +08:00
@BOYPT 那我想获取里面的数据流 怎么办?
就是 关于socket通信的一些属性 和 数据 怎么办?
BOYPT
2013-08-23 17:02:38 +08:00
http://superuser.com/questions/484671/can-i-monitor-a-local-unix-domain-socket-like-tcpdump

可以用socat做中转。
或者作为调试你用tcp socket替代着就好了嘛。(调试PHP用得着用抓包么……
fucktwice
2013-08-23 18:04:47 +08:00
@BOYPT 监听端口号这个socat工具我以前没注意到,
应该没问题的。
不过我还是想知道 用代码怎么实现?
socket代码或者 icmp 这些代码怎么实现?
julyclyde
2013-08-23 23:21:19 +08:00
unix domain socket没有icmp

socket文件不是用来open的,是用来connect的。在unix domain socket体系里,那个文件名是个传输层地址,相当于tcp的端口号

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

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

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

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

© 2021 V2EX