2015-10-18 41 views
-2

我正在使用示例客户端程序和服务器应用程序。客户端代码来自(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,则客户端在连接被拒绝时失败,但是如果我将服务器套接字绑定到回送ip,则客户端/服务器程序将起作用。如果套接字绑定到eth0接口,则轮询返回pollhup和pollerr

回答

0

回送数据路径不经过ETH/0也不ETH/1

因此,如果结合到这些设备,则无法通过环回进行通信。

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

的“绑定到设备”与有互联网许多连接网络服务器工作时,是唯一真正有用的,你想要的流量负载

更容易只是绑定分配到一个“口”(一个神话的设备),并让通信协议处理实际使用哪个硬件IO的细节。

+0

我需要限制服务器套接字接受来自特定网络接口的连接,我该怎么做? – Hariharan

相关问题