我正在使用示例客户端程序和服务器应用程序。客户端代码来自(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接口,或者如果我将服务器套接字绑定到loopback ip,则客户端服务器程序正在运行。但是如果我绑定到eth0 / eth1,则poll与pollhup和pollerr失败。连接被拒绝时,errno返回。但是服务器正在特定界面中运行和监听。 查询, 我需要限制服务器套接字以仅接受来自特定接口的数据。我怎么做? 为什么如果我将服务器套接字绑定到eth0 / eth1,客户端会因连接被拒绝而失败,但是如果我将服务器套接字绑定到loopback ip,则客户端/服务器程序可以工作。
答案 0 :(得分:0)
环回数据路由不通过eth / 0也不通过eth / 1
因此,如果绑定到这些设备,则无法通过环回进行通信。
即使服务器/客户端位于不同的计算机上,也没有理由绑定到这些设备。
“绑定到设备”仅在使用与互联网有多个连接且您想要分配流量负载的网络服务器时非常有用
更容易绑定到'端口'(神话设备),并让通信协议处理确切使用哪个硬件I.O的详细信息。