IPAddress.Any表示本機ip,換言之,如果服務器綁定此地址,則表示偵聽本機所有ip對應的那個端口(本機可能有多個ip或只有一個ip)
IPAddress.Any微軟給出的解釋是:Provides an IP address that indicates that the server must listen for client activity on all network interfaces. This field is read-only.翻譯過來就是:提供一個iP地址來指示服務器必須監聽所有網卡上的客戶端活動。此字段為只讀的。也就是說,對雙卡網或者多網卡的機器,每個網卡都會有一個獨立的ip,如果使用了IPAddress.Any就表示服務器必須監聽本機所有網卡上的指定端口。
比如雙網卡機器,內網ip為192.168.0.1,外網ip為120.210.1.1,服務器可以同時監聽192.168.0.1:80和120.210.1.1:80。
localipAddress = Dns.Resolve(IPAddress.Any.ToString()).AddressList[0];
m_RecSocket = new TcpListener(localipAddress, m_localPort);
的寫法可以改成
m_RecSocket = new TcpListener(IPAddress.Any, m_localPort);