我正在尋找獲取剛剛創建的套接字的本地IP地址。我需要能夠支持具有多個NIC的服務器,並且能夠向請求客戶端反饋稍後直接IP地址的連接。我正在使用以下代碼:獲取套接字的本地IP地址
Socket rsock = null;
rsock= new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
rsock.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0);
rsock.Bind(new IPEndPoint(IPAddress.IPv6Any, port));
rsock.Listen((int)SocketOptionName.MaxConnections);
在此之後,.LocalEndPoint踢出:[::]:PORT。
背景: 我之所以需要IP地址是由另一個客戶端輔助連接將需要返回到這個特定的服務器。這些服務器可能位於負載平衡器後面,用於初始服務器選擇,因此客戶端無法根據主機名解析IP地址。
從客戶端接受連接後,您應該可以在新創建的Socket對象上使用LocalEndPoint來獲取所需的IP地址。 – 2012-03-12 16:19:44
即使通過以下方式接受連接,.LocalEndPoint仍然說[::]:PORT。 'Socket nsock = rsock.Accept();' – 2012-03-12 16:36:09
你說'nsock.LocalEndPoint'仍然報告綁定到'IPv6Any'?我不在IPv6友好的局域網中,所以我不能專門測試,但我知道這適用於IPv4。 – 2012-03-12 16:38:35