VB6 Socket zu C++ Socket

ErrorMaker

Grünschnabel
Hallo zusammen :)

Ich programmiere schon seit einiger Zeit mit Visual Basic 6.0 (auch wenn die Sprache ein wenig überholt ist).

Nun habe ich mir eine ein C++ Client geschrieben und möchte mit meinem VB6 Server kommunizieren.

Für den C++ Client habe ich folgende Socket Klasse verwendet: http://www.adp-gmbh.ch/win/misc/sockets.html

Der C++ Client sieht so aus:
Code:
	  try {
		SocketClient s(local_ip.c_str(), 12345);

		s.SendLine("ToVB");

		string l = "";
		while (1) {
		  l = s.ReceiveLine();
		  log_to_file("%s\n",l.c_str());
		  if (l.empty()) break;
		}
		log_to_file("%s\n",l.c_str());
	  } 
	  catch (const char* s) {
		log_to_file("%s\n",s);
	  } 
	  catch (std::string s) {
		log_to_file("%s\n",s.c_str());
	  } 
	  catch (...) {
		log_to_file("%s\n","unhandled exception");
	  }

Der VB6 Server sieht so aus:
Code:
'Listening
Private Sub Listening_Click()
SckServer.CloseSck
SckServer.LocalPort = 12345
SckServer.Listen
MsgBox "Listening: " & GetSocketState(SckServer.State)
End Sub

Private Sub SckServer_ConnectionRequest(ByVal requestID As Long)
SckServer.CloseSck
MsgBox "SckServer ConnectionRequest"
SckServer.Accept (requestID)
MsgBox "SckServer ConnectionRequest: " & GetSocketState(SckServer.State)
End Sub

Private Sub SckServer_DataArrival(ByVal bytesTotal As Long)
Dim tmp As String
SckServer.GetData tmp
MsgBox tmp
If InStr(tmp, "ToVB") Then
MsgBox "Sending"
SckServer.SendData ("ToDLL")
End If
End Sub

Geplant ist, dass der C++ Client dem VB6 Server den String "ToVB" schickt und dieser dem VB6 Server "ToDLL" zurückschickt.

Von C++ zu VB6 funktioniert dies auch einwandfrei, ich erhalte die MessageBox mit dem "ToVB" String. Jedoch bleibt mir der C++ Client hängen wenn ich "ToDLL" zurückschicke.

Ich habe ausserdem mit Erfolg (erhielt Antwort vom Google Server ohne hängen zu bleiben) folgendes mit dem C++ Client probiert um zu prüfen ob es an meinem VB6 Server Programm liegt:
Code:
	  try {
                  SocketClient s("www.google.com", 80);

                  s.SendLine("GET / HTTP/1.0");
                  s.SendLine("Host: www.google.com");
                  s.SendLine("");

		string l = "";
		while (1) {
		  l = s.ReceiveLine();
		  log_to_file("%s\n",l.c_str());
		  if (l.empty()) break;
		}
		log_to_file("%s\n",l.c_str());
	  } 
	  catch (const char* s) {
		log_to_file("%s\n",s);
	  } 
	  catch (std::string s) {
		log_to_file("%s\n",s.c_str());
	  } 
	  catch (...) {
		log_to_file("%s\n","unhandled exception");
	  }

Nun frage ich mich, ob es nicht möglich ist, einen einfachen String von VB6 zu C++ über die Socket Klasse zu senden.



Vielen Dank im Voraus für jegliche Hilfe ;)

- ErrorMaker
 
Hi.

Wenn du die ReceiveLine Methode verwendest, wird versucht eine Zeile vom Server zu Lesen, d.h. bis ein \n kommt.

Sende von deinem VB Programm "toDLL" & vbLf. (oder schließe die Verbindung vom Server)

Gruß
 

Neue Beiträge

Zurück