【问题标题】:Poll returns pollhup and pollerr if socket is bound to eth0 interface如果套接字绑定到 eth0 接口,则 poll 返回 pollhup 和 pollerr
【发布时间】:2015-10-18 17:09:42
【问题描述】:

我正在使用示例客户端程序和服务器应用程序。客户端代码来自(https://github.com/nori0428/mod_websocket/blob/master/src/mod_websocket_socket.c#L19-L68),服务器程序来自(http://www.thegeekstuff.com/2011/12/c-socket-programming/)。除非我使用 SO_BINDTODEVICE 将服务器套接字绑定到 eth0 或 eth1 n/w 接口,否则客户端和套接字程序工作正常。如果我没有将服务器套接字绑定到特定的 n/w 接口,或者如果我将服务器套接字绑定到环回 ip,则客户端服务器程序正在工作。但如果我绑定到 eth0/eth1,pollhup 和 pollerr 会失败。当连接被拒绝时,errno 返回。但是服务器正在运行并在特定界面中侦听。 查询, 我需要限制服务器套接字仅接受来自特定接口的数据。我怎么做? 为什么如果我将服务器套接字绑定到 eth0/eth1,客户端会失败并拒绝连接,但是如果我将服务器套接字绑定到环回 ip,则客户端/服务器程序可以工作。

【问题讨论】:

    标签: c sockets client-server


    【解决方案1】:

    环回数据路由既不经过eth/0也不经过eth/1

    因此,如果您绑定到这些设备,则无法通过环回通信。

    确实没有理由绑定到这些设备,即使服务器/客户端位于不同的机器上。

    “绑定到设备”仅在使用与 Internet 有许多连接的网络服务器并且您想要分配流量负载时才真正有用

    绑定到“端口”(一种神秘的设备)并让通信协议处理实际使用的硬件 I.O 的详细信息要容易得多。

    【讨论】:

    • 我需要限制服务器套接字接受来自特定网络接口的连接,我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多