hi,
ich hab mal nen halbstündigen debug-durchlauf gemacht und wirklich jede einzelne aktion
beider programme (client und server) beobachtet:
beim aufruf von
clientsocket.open; wird beim server das OnClientConnect-Event ausgelöst. sofort darauf steht die eigenschaft
clientsocket.active auf
false - demnach kann der client keine daten an den server senden.
wenn der server aber nun daten an den clienten sendet, reagiert der client auch richtig darauf.
ist das nicht komisch?
hier mein (zerstückelter) connect-code:
Delphi-Quellcode:
begin
if clientsocket1.active
then
exit;
//prüfen, ob server schon angegeben wurde
//...
//usernamen & pw aus edits lesen
//...
//socket einstellen und verbinden
clientsocket1.Address := '
localhost';
//127.0.0.1
clientsocket1.port := 44044;
ClientSocket1.Open;
//ClientSocket1.Active := true;
//pw abrufen
check_pw := clientsocket1.socket.sendtext('
getuserpw|Aenogym');
//wenn diese nachricht am server ankommt, sucht er das passwort des benutzers
//und sendet es zurück zum clienten. leider kommt die nachricht nie an, da active:=false
//md5 aus passwort generieren
pw := md5print(md5string(pw));
//pw's vergleichen
if pw <> check_pw
then
begin
showmessage('
Falsches Passwort');
exit;
end
else
begin
//kontakliste abrufen
//hier wird wieder per sendText() etwas an den server geschickt
if clientsocket1.active
then
showmessage('
Aktiv');
end;
end;
ich habe es schon geschafft, dass wenn der server nicht gestartet ist, wieder die normale
Exception kommt (socket error 10060).
anscheinend ist der client auch mit dem server verbunden (vorausgesetzt, dieser ist gestartet

). allerdings kann der client keine daten senden, da active immer false ist...
ich kanns mir nicht erklären,
Aenogym