ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
525
525
EMPFEHLEN
-
04.06.11 14:17 #1
- Registriert seit
- Jun 2011
- Beiträge
- 1
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
'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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
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
-
09.06.11 12:22 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
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ßIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Was ist ein Socket?
Von benija im Forum NetzwerkeAntworten: 5Letzter Beitrag: 15.06.08, 16:37 -
'Socket Error #10038 Socket operation on non-socket'
Von jupp2oo8 im Forum C/C++Antworten: 2Letzter Beitrag: 30.01.08, 10:24 -
'Socket Error #10038 Socket operation on non-socket'
Von jupp2oo8 im Forum C/C++Antworten: 2Letzter Beitrag: 29.01.08, 14:59 -
Server Socket und Client Socket
Von spiderman21 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 23.10.07, 17:00 -
Server Socket und Client Socket
Von spiderman21 im Forum NetzwerkeAntworten: 1Letzter Beitrag: 22.10.07, 01:48





Zitieren
Login





