Hi
also ich hier folgendes schnippselchen:
Delphi-Quellcode:
procedure TServer.ServerSocket2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
anzahl:Integer;
i:Integer;
r_text:String;
begin
// Routine für Joinen
if (flag_connected = True) then
begin
r_text:=Socket.ReceiveText;
users.Items.Add(r_text);
Memo1.Lines.add('Username: '+r_text);
flag_connected := False;
end;
if (Socket.ReceiveText = 'New_join') then
begin
Memo1.Lines.add(Timetostr(now)+': New user connected');
flag_connected := True;
end;
// Ende Routine für Joinen
if (flag_quit = True) then
begin
for i := 0 to users.Items.Count -1 do
begin
if (users.Items[i] = Socket.ReceiveText) then
users.items.Delete(i);
end;
Memo1.Lines.add('Username: '+Socket.ReceiveText);
flag_quit := False;
end;
if (Socket.ReceiveText = 'New_quit') then
begin
Memo1.Lines.add(Timetostr(now)+': User quit');
flag_quit := True;
end;
end;
Erklärung: Wenn jemand eine Verbindung mit dem Server aufbaut, dann wird über den Socket ein Text gesendet mit folgender Proc:
Delphi-Quellcode:
Nachricht := 'New_join';
delay(500);
ClientSocket2.Socket.SendText(Nachricht);
Nachricht := nick.Text;
delay(500);
ClientSocket2.Socket.SendText(Nachricht);
Das Joinen klappt auch noch wunderbar...
nun hab ich in dem Programm bei onClose noch das gleiche allerdings halt mit Nachricht := 'New_quit'...
aber DAS funktioniert nicht. der server bekommt nicht das 'New_quit' und führ dementsprechend auch nichts aus...
was könnte das Problem sein? Ich vermute ggf das man indem Empfangsteil nicht 2 mal hintereiander Socket.Receive abfragen kann?
gruß