Einzelnen Beitrag anzeigen

marius86

Registriert seit: 23. Jun 2003
Ort: Aachen
17 Beiträge
 
Delphi 7 Enterprise
 
#1

socket-problem (receive + send)

  Alt 18. Jul 2004, 12:48
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ß
  Mit Zitat antworten Zitat