V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
fucktwice
V2EX  ›  问与答

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

  •  
  •   fucktwice · 2013-08-23 12:06:01 +08:00 · 2807 次点击
    这是一个创建于 4118 天前的主题,其中的信息可能已经有所发展或是发生改变。
    php5-fpm.sock 这是一个sockect文件?
    了解socket的建立过程,但是为什么把socket当作一个文件呢?

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

    php5-fpm.sock只是一个符号,并不会有任何数据经过磁盘。这样一个符号是建立 userspace<->kernelspace<->userspace 这样的管道的传统方式,这样的实现有利于在unix系系统里面实现跨平台。
    fucktwice
        3
    fucktwice  
    OP
       2013-08-23 12:59:37 +08:00
    @BOYPT 那我想获取里面的数据流 怎么办?
    就是 关于socket通信的一些属性 和 数据 怎么办?
    BOYPT
        4
    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
        5
    fucktwice  
    OP
       2013-08-23 18:04:47 +08:00
    @BOYPT 监听端口号这个socat工具我以前没注意到,
    应该没问题的。
    不过我还是想知道 用代码怎么实现?
    socket代码或者 icmp 这些代码怎么实现?
    julyclyde
        6
    julyclyde  
       2013-08-23 23:21:19 +08:00 via iPad   ❤️ 1
    unix domain socket没有icmp

    socket文件不是用来open的,是用来connect的。在unix domain socket体系里,那个文件名是个传输层地址,相当于tcp的端口号
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2600 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:50 · PVG 18:50 · LAX 02:50 · JFK 05:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.