Das vorhandene Szenario wird im Folgenden erläutert.TCP-Verbindung über CAsyncSocket funktioniert nicht: onConnect nie aufgerufen
Unsere Anwendung läuft auf Client Server Architektur; Der Client wird mit VC++ entwickelt und der Server wird mit C# entwickelt.
Auf der Server-Seite gibt es zwei exe läuft (myServer1.exe - Windows-Dienst basiert und myServer2.exe - Windows-Anwendung). myServer2.exe kommuniziert mit myServer1.exe über eine TCP-Socket-Verbindung.
Auf der Clientseite führt eine EXE (myApp1.exe -Windows Service-basiert) eine weitere EXE basierend auf Benutzersitzungen aus, die auf dem Computer vorhanden sind (myUser.exe für alle Benutzersitzungen). Jede myUser.exe-Instanzen kommunizieren mit myApp1.exe über PIPE-Kommunikation. Und myApp1.exe kommuniziert außerdem mit MyServer1.exe über eine andere TCP-Kommunikation.
Neues Szenario.
Wir erstellen jetzt einen TCP-Socket im Hörmodus in myServer2.exe (Server-Anwendung -C#). myUser.exe (Clientanwendung -VC++) versucht über eine TCP-Verbindung mithilfe von CAsyncSocket
eine Verbindung zu myServer2.exe herzustellen. Aber die Rahmenaufrufe (OnConnect
, OnReceive
und OnClose
) sind nicht passiert.
Sockel Erstellungs- Create(0,SOCK_STREAM); // CAyncSocket
Sockel connection- Connect("ServerIP", "ServerPort"); // CAsyncSocket
Hinweis: Wenn wir die Socketerstellung und Verbindungsfunktionen in Windows-Dienst auf Basis exe (myApp1.exe) bewegen, funktioniert die Verbindung in Ordnung, OnConnect OnReceive und OnClose geschehen.
Warum Rahmen Aufruf OnConnect nicht in myUser.exe während geschieht in myApp1.exe ist?
so im Allgemeinen, haben Sie eine C# Windows-Server-Anwendung und viele VC++ Kunden und Sie wollen, dass sie direkt über TCP kommunizieren? Teilen Sie einen Code – salvolds
Ab sofort funktioniert die Kommunikation zwischen dem Server und den Clients gut. Problem ist, dass ich einen Socket in der myUser.exe mit dem sendenden Modus erstellen möchte und der myServer2.exe dasselbe abhören wird. Aber die Benachrichtigungsfunktionen (Onconnect, OnSend usw.) auf der myUser.exe (VC++) werden nicht ausgeführt . Immer den Socket-Fehler 10035 (Der Vorgang sollte später zurückgezogen werden).Aber wir haben es mehrmals versucht und immer noch den gleichen Fehler bekommen. Also die 'CAsyncSocket :: Connect' immer fehlgeschlagen. –