)。我今天用TcpListener進入了一些問題。事情很奇怪。最初,我使用了新的TcpListener(port)構造函數,但它已被標記爲過時。所以我放棄了它,並用這個來代替:IPAddress.Any Fail
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, ServerPort);
TcpListener tcpServer = new TcpListener(ipLocalEndPoint);
_TCPClient = tcpServer.AcceptTcpClient();
GotClient();
我這樣做,在一個線程,當然,這樣纔不會鎖定應用程序。現在,發生的情況是,即使ipAddress正確,服務器也不會接受任何傳入連接。
但是,更改爲新的IPEndPoint(IPAddress.Any,ServerPort)似乎有伎倆!這在2種方式中很愚蠢:
2小時前,IPAddress.Any返回192.168.1.102這是我的正確本地IP。這是相同的IP地址 IPAddress!但是使用ipAddress它不起作用,而使用IPAddress.Any它工作(也就是說,它成功地接受了來自我的客戶端的連接)。
當前:IPAddress.Any返回0.0.0.0(!?),而ipAddress變量繼續分配給我正確的IP(192.168.1.102)。結果?如果使用ipAddres,我的客戶端不能連接,但當使用IPAddress.Any時,連接,即使它是0.0.0.0。
我完全被這個困惑......任何想法?
我目前在Form_HandleCreated中有這個,但當我在Form的構造函數中使用它時,它的行爲也很奇怪。
後來編輯:我想我錯了IPAddress.Any返回192.168.1.102。我可能會印出其他的東西,因爲你們許多人都表示0.0.0.0是什麼。任何應該返回。對不起:: - D.
嗨,感謝您的回答:: - D.是的,我想我犯了一個錯誤。任何和打印在控制檯ipAddress代替。 無論如何,我試圖從Device Emulator(從.Net CF應用程序)連接到192.168.1.102。所以我沒有嘗試127.0.0.1。儘管......想到了這個想法......如果模擬器本身能夠通過它呢?雖然在.Net Compact Framework的套接字中我特別要求192.168.1.102。 – Axonn 2010-08-06 16:51:33
如果你試圖從模擬器連接到主機,我不知道IP地址是什麼樣的......可能有一些NAT,我不能說。 – Mark 2010-08-06 16:55:06
另外,它讓我想知道是否已經在仿真器和主機之間建立了網絡連接。我似乎記得模擬器中有多種選項用於網絡工作。另外,請確認您的防火牆設置,它可能會被阻止,具體取決於您設置的方式。 – Mark 2010-08-06 16:56:56