我正在使用C套接字編寫客戶端/服務器程序。我指定服務器可以通過在sockaddr_in.sin_addr.s_addr中使用INADDR_ANY來監聽任何網絡接口。這相當於IP爲0.0.0.0。我能否獲得服務器正在監聽的實際IP? (例如192.168.1.100)C爲監聽服務器獲取IP
回答
我希望你不需要IPv6支持,因爲這不適用於IPv6。 – 2012-04-06 11:30:52
不,我不知道。但如果你解釋爲什麼它不合適,它可能會幫助那些做的人。我認爲使用的函數調用具有與IPv6相當的功能。 – Gigi 2012-04-06 11:51:43
'getaddrinfo'函數([linux文檔](http://linux.about.com/library/cmd/blcmdl3_getaddrinfo.htm),[Windows文檔](http://msdn.microsoft.com/en-us/ library/windows/desktop/ms738520(v = vs.85).aspx))可以識別IPv6並執行相同的功能。 – 2012-04-06 12:31:43
將偵聽套接字綁定到INADDR_ANY
時,套接字會偵聽所有可用的本地IP。沒有辦法從套接字確定它正在監聽的IP地址。如果您需要這些信息,則必須單獨列舉本地IP(如果您需要檢索預先接受綁定的詳細信息,則可以單獨將每個IP分別輸入bind()
)。但是,一旦accept()
已返回已建立的客戶端連接,您可以在接受的套接字上使用getsockname()
來知道哪個特定的IP接受了連接。
- 1. C#套接字監聽器(服務器)
- 2. 如何獲取Restify服務器的確切IP地址進行監聽?
- 3. WCF服務監聽器
- 4. 如何爲MSMQ創建C#監聽器服務作爲Windows服務
- 5. 獲取服務器正在監聽的端口號?
- 6. Android服務器請求監聽器
- 7. 停止傳感器監聽器服務
- 8. Android Intent服務的位置監聽器
- 9. Yesod開發服務器只監聽ipv6
- 10. Influxdb服務器沒有監聽8086
- 11. Java RMI服務器在哪裏監聽?
- 12. getpeername()從監聽(服務器)套接字
- 13. 監聽器不支持服務
- 14. 獲取服務器IP地址
- 15. 獲取IP地址當前服務器
- 16. ASP.NET - 獲取服務器本地IP
- 17. 如何獲取服務器IP地址?
- 18. 獲取服務器IP地址
- 19. 獲取DNS服務器IP上IPhone
- 20. WCF監聽服務總線
- 21. 攝像頭監聽服務?
- 22. 從服務器獲取服務器文件夾IP
- 23. 爲服務器套接字響應創建監聽器?
- 24. 在文檔監聽器中獲取JTextField
- 25. 獲取事件監聽器數組
- 26. C#中soap消息的Web服務監聽器
- 27. 提取服務器IP
- 28. 獲取C#2010中的服務器名稱和IP地址
- 29. 如何獲取響應WebResponse的服務器的IP地址C#
- 30. 反應本地:如何取消註冊監聽器/服務?
連接建立之前還是之後?服務器可能正在監聽幾個地址。 – blueshift 2012-03-25 13:18:00
之前。就我而言,我只會擁有一個IP。只是讓系統決定。但我仍然想知道它的決定。 – Gigi 2012-03-25 13:19:24
服務器將偵聽可用的* all *接口。即使一個接口可能有多個IP地址。 – 2012-03-25 13:25:43