Client- und ServerSocket machen Probleme
-
Hallo!
Ich habe ein sehr großes Problem mit den TClient- uns ServerSockets. Ich weiß noch nicht einmal genau ob ich dieses Problem beschreiben kann, aber ich werds versuchen:
Ich benutzte seit neustem den C++ Builder 2009 und habe versucht eine ganz kleine TCP-Verbindung aufzubauen.
Hier so der Aufbau in grob:
`ClientSocket1 hat den Host 127.0.0.1 und den Port 1337.
ServerSocket1 hat ebenfalls den Port 1337.
Da sich der Aufbau im Netzwerk abspielt brauch ich ja keine Ports freizuschalten.`
Button1:
ClientSocket1->Active = true; ServerSocket1->Active = true;
Button2:
ClientSocket1->Socket->SendText("Test");
ServerSocket::OnClientRead :
ShowMessage(Socket->ReceiveText());
So nun der Fehler: Der Text kommt beim ServerSocket nicht richtig an. Es kommen irgendwelche andere Zeichen an. Teilweise sogar Zeichen aus anderen Strings in meinem Code(!!!). Das gleiche Passiert auch wenn ich vom ServerSocket etwas wieder zurück an den ClientSocket schicke.
Ist es möglich, dass es da Probleme mit den RAM-Adressen gibt und er deshalb auf andere bereiche Zugreift und somit auch Teile von anderen Strings mit anzeigt?
Könnte jemand mal den Versuch im C++ Builder 2009 nachstellen? Im 2007 hat das ganze genau so Funktioniert. Entstehen die Probleme auf Grund der Umstellung auf Unicode?
Achso: Hier noch ein Beispiel was Ankommt wenn ich wenn ich etwas in einem etwas größeren Programm sende:
潰杮嬼嵀>68.2
Gesendet wurde: pong
Vielen Dank schonmal
-
Hallo.
Versuche mal, den Text mittels "ClientSocket1->Sochet->WriteLn("Pong");" zu senden.
und mittels
AContext->Connection->IOHandler->ReadLn();
im Execute-Handler des Servers auszulesen.Ansonsten findest du hier auch ein kleines Beispiel:
Funktioniert ebenfalls mit dem C++Builder 2009.
Client/Server Anwendungen
-
danke werd ich mal machen.
habs zur zeit mit receiveBuf gelöst. das geht wunderbar
mfg
-
Deforation schrieb:
Versuche mal, den Text mittels "ClientSocket1->Sochet->WriteLn("Pong");" zu senden.
und mittels
AContext->Connection->IOHandler->ReadLn();Das ist aber INDY und nicht die alten Borland Sockets
BlahMan schrieb:
danke werd ich mal machen.
habs zur zeit mit receiveBuf gelöst. das geht wunderbar
mfg
Als ich selbst mal nach was gesucht habe, hab ich 'nen Thread im Borland Forum gefunden wo einer das selbe Problem hatte. Einer von Borland meinte, dass liegt an Unicode.