[英]C#-Server / C++ Client: Socket.Accept() never finishes
我正在編寫一個應該連接到C#服務器的簡單C ++客戶端。 而且,盡管客戶端運行得很好,甚至說它發送了很多消息,但C#服務器永遠不會越過listener.Acceppt()
:
Console.WriteLine("Waiting for a connection...");
// Program is suspended while waiting for an incoming connection.
Socket handler = listener.Accept();
我從此處獲取服務器源: Microsoft MSDN:同步服務器套接字示例
我使用的客戶端代碼可以在這里找到: Microsoft MSDN:完整的Winsock客戶端代碼
我還使用相應的C#客戶端檢查了服務器,效果很好。 我還檢查了客戶端的返回值,看起來也很合理。 因此,我想問題可能出在C ++ / C#如何處理細節上。
我嘗試了Wireshark來找到一些提示,但神秘地發現在使用的端口(11000)上絕對沒有任何通信的痕跡。
我應該從哪里着手解決這個問題?
更新:目前所有通信僅在本地運行。 我為服務器和客戶端嘗試了我的IPAddress(來自ipconfig
)和127.0.0.1
。
我只安裝了一個網絡適配器,我使用的是IP地址。 客戶端檢查getaddrinfo(argv[1], DEFAULT_PORT, &hints, &result)
並返回有效信息(例如,TCP作為協議)。 connect()
返回0
,應該可以。
更新2:我嘗試了C ++ / C#Server-Client-Setups的不同組合:
更新3:我在其他服務器-客戶端星座上嘗試了Wireshark,但是它們都沒有顯示tcp.port == 11000
上的任何流量,盡管它們確實起作用(請參閱更新2)。 看起來Wireshark沒有顯示任何結果,因為所有內容都只是本地的(請參閱Wireshark本地主機流量捕獲 )
我有同樣的問題。 與winsock的連接是異步的。 C#中使用的示例是同步的。 您必須使用一個異步示例來與C ++代碼進行通信。
我用這兩個例子!
C Sharp服務器https://msdn.microsoft.com/en-us/library/fx6588te(v=vs.110).aspx
C plus加客戶端https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms737591(v=vs.85).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.