我正在使用示例客戶端程序和服務器應用程序。客戶端代碼來自(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
-2
A
回答
0
回送數據路徑不經過ETH/0也不ETH/1
因此,如果結合到這些設備,則無法通過環回進行通信。
即使服務器/客戶端位於不同的計算機上,實際上也沒有理由綁定到這些設備。
的「綁定到設備」與有互聯網許多連接網絡服務器工作時,是唯一真正有用的,你想要的流量負載
更容易只是綁定分配到一個「口」(一個神話的設備),並讓通信協議處理實際使用哪個硬件IO的細節。
相關問題
- 1. 閱讀()後輪詢返回POLLIN和POLLERR
- 2. Android - 套接字和輪詢
- 3. 如何將原始套接字綁定到特定接口
- 4. 如何將套接字綁定到vxWorks中的特定接口
- 5. 套接字創建失敗,但套接字()和綁定()方法不返回-1
- 6. 如何將套接字綁定到虛擬接口?
- 7. 如何將套接字綁定到多個接口
- 8. 如何將套接字綁定到python的接口(socket.SO_BINDTODEVICE丟失)
- 9. Ruby:將監聽套接字綁定到特定接口
- 10. 如何確定Linux套接字在C++中綁定的接口
- 11. IoC和綁定到接口
- 12. ppp0接口使用eth0接口
- 13. 將套接字綁定到網絡接口
- 14. 將套接字重新綁定到不同的接口
- 15. PHP套接字綁定特權端口
- 16. 如何將原始套接字綁定到特定的端口?
- 17. 如何將UDP套接字綁定到一系列端口
- 18. 「綁定到套接字錯誤」後無法終止套接字
- 19. 如果套接字仍然連接,EndReceive是否會返回零?
- 20. 帶輪詢的非阻塞套接字
- 21. 測試C++輪詢套接字函數
- 22. 取消套接字輪詢操作
- 23. 服務器套接字不綁定到指定的端口
- 24. 綁定vs SO_BINDTODEVICE套接字
- 25. 綁定發送套接字
- 26. 綁定套接字Android
- 27. 套接字綁定錯誤
- 28. 套接字輪詢(selectwrite輪詢模式)何時變爲false?
- 29. 如何將多個接口綁定到一個原始套接字
- 30. 如何動態地將套接字綁定到一個網絡接口?
我需要限制服務器套接字接受來自特定網絡接口的連接,我該怎麼做? – Hariharan