現有方案如下所述。通過CAsyncSocket的TCP連接不起作用:onConnect從未調用
我們的應用程序運行在Client Server架構上;客戶端使用VC++開發,服務器使用C#開發。
在服務器端有兩個exe的運行(myServer1.exe - 基於Windows服務,和myServer2.exe - Windows應用程序)。 myServer2.exe通過TCP套接字連接與myServer1.exe進行通信。
在客戶端,一個exe(myApp1.exe - 基於Windows服務)根據機器中存在的用戶會話(所有用戶會話的myUser.exe)運行另一個exe。每個myUser.exe實例都通過PIPE通信與myApp1.exe進行通信。並且myApp1.exe也通過另一個TCP通信與myServer1.exe通信。
新情況。
我們現在在myServer2.exe(服務器應用程序-C#)的監聽模式下創建一個TCP套接字。 myUser.exe(客戶端應用程序-VC++)嘗試通過使用CAsyncSocket
通過TCP連接來連接到myServer2.exe。但框架調用(OnConnect
,OnReceive
和OnClose
)沒有發生。
插槽creation- Create(0,SOCK_STREAM); // CAyncSocket
插座連接 - Connect("ServerIP", "ServerPort"); // CAsyncSocket
注:當我們移動插座創建和連接功能集成到Windows服務的基於EXE(myApp1.exe),連接工作正常,爲onConnect的onReceive和OnClose正在發生。
爲什麼框架調用OnConnect沒有發生在myUser.exe中,而在myApp1.exe是?
所以基本上,你有一個C#的Windows Server應用程序和許多VC++客戶,你希望他們通過TCP右溝通?分享一些代碼 – salvolds
截至目前,服務器和客戶端之間的通信工作正常。問題是我想在發送模式下在myUser.exe中創建一個套接字,並且myServer2.exe將會聽到相同的信息。但myUser.exe(VC++)上的通知函數(Onconnect,OnSend等)不會發生。總是得到套接字錯誤10035(該操作應該在稍後停用)。但我們嘗試了幾次,仍然得到相同的錯誤。所以'CAsyncSocket :: Connect'總是失敗。 –