Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi bekomme asynchronous socket error 10060 nicht uner Kontrolle (https://www.delphipraxis.net/22885-bekomme-asynchronous-socket-error-10060-nicht-uner-kontrolle.html)

ppirokke 25. Mai 2004 17:40


bekomme asynchronous socket error 10060 nicht uner Kontrolle
 
Hallo zusammen ^^

Ich habe folgendes Problem:
Zum Einstieg in Server und Clientverwendung wollte ich erstmal einen kleinen chat programmieren. Nun besteht aber das Problem, dass ich immer folgenden Fehler erhalte, was natürlich klar ist, wenn der andere PC das Programm noch nicht gestartet hat: asynchronous socket error 10060 . Dann wollte ich den Fehler einfach umgehen und habe jetz folgenden Quelltext vorliegen, aber es klappt wie immer nicht ^^ Der Fehler tauscht weiterhin auf :wiejetzt: :

Delphi-Quellcode:
procedure TForm1.Beenden1Click(Sender: TObject);
begin
 ServerSocket.active:=false; //server schließen
 ClientSocket.active:=false; //client schließen
 close
end;

procedure TForm1.StartButtonClick(Sender: TObject);
begin
 nick:=nickEdit.text;
 Timer.Enabled:=true;
 GroupBox1.Visible:=false;
 ChatGB.Visible:=true;
                          //server
 ServerSocket.Port := 23; //Festlegung des Ports
 ServerSocket.active := true; //Aktivierung der ServerSocket
                           //client
if ip1Edit.text<>''
 then begin
 ClientSocket.Port := 23; //Festlegung des Ports
 ClientSocket.Host := ip1Edit.text; //IP des Zielrechners
      try
 ClientSocket.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket.active := true; //Aufbau der Verbindung
      end;
      end;
if ip2Edit.text<>''
 then begin
 ClientSocket1.Port := 23; //Festlegung des Ports
 ClientSocket1.Host := ip2Edit.text; //IP des Zielrechners
      try
 ClientSocket1.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket1.active := true; //Aufbau der Verbindung
      end;
      end;
if ip3Edit.text<>''
 then begin
 ClientSocket2.Port := 23; //Festlegung des Ports
 ClientSocket2.Host := ip3Edit.text; //IP des Zielrechners
      try
 ClientSocket2.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket2.active := true; //Aufbau der Verbindung
      end;
      end;
if ip4Edit.text<>''
 then begin
 ClientSocket3.Port := 23; //Festlegung des Ports
 ClientSocket3.Host := ip4Edit.text; //IP des Zielrechners
      try
 ClientSocket3.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket3.active := true; //Aufbau der Verbindung
      end;
      end;
end;

procedure TForm1.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo.Lines.Add(Socket.ReceiveText); //Texteingang von Clients
end;

procedure TForm1.OKButtonClick(Sender: TObject);
var text:string;
begin
text:='['+nick+']: '+TextEdit.text; //nick in chat eingefügt
Memo.Lines.Add(text);
if ClientSocket.Active then
   ClientSocket.Socket.SendText(text); //senden der Nachricht 1
if ClientSocket1.Active then
   ClientSocket1.Socket.SendText(text); //senden der Nachricht 2
if ClientSocket2.Active then
   ClientSocket2.Socket.SendText(text); //senden der Nachricht 3
if ClientSocket3.Active then
   ClientSocket3.Socket.SendText(text); //senden der Nachricht 4
TextEdit.Text:='';
end;

procedure TForm1.aktualisieren1Click(Sender: TObject);
begin
x:=9
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case Key of       // abfrage welche taste****
VK_RETURN:        // return
        begin
        OKButton.Click;
        Key:=0;         // Taste auf 0 gesetzt
        end;

end;
end;

procedure TForm1.Clienthinzufgen1Click(Sender: TObject);
begin
 GroupBox1.Visible:=true;
 ChatGB.Visible:=false;
 Timer.enabled:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 x:=9;
 Form1.StatusBar1.Panels[0].Text:= 'LAN-chat';
 Form1.StatusBar1.Panels[1].Text:= 'v 1.0';
 Form1.StatusBar1.Panels[2].Text:= '(c) Ppirokke';
 Form1.StatusBar1.Panels[3].Text:= '@ beta';
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
x:=x+1;
 if x=10 then
  begin
   if ip1Edit.text<>''
 then begin
 ClientSocket.Port := 23; //Festlegung des Ports
 ClientSocket.Host := ip1Edit.text; //IP des Zielrechners
      try
 ClientSocket.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket.active := true; //Aufbau der Verbindung
      end;
      end;
if ip2Edit.text<>''
 then begin
 ClientSocket1.Port := 23; //Festlegung des Ports
 ClientSocket1.Host := ip2Edit.Text; //IP der Verbindung
      try
 ClientSocket1.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket1.active := true; //Aufbau der Verbindung
      end;
      end;
if ip3Edit.text<>''
 then begin
 ClientSocket2.Port := 23; //Festlegung des Ports
 ClientSocket2.Host := ip3Edit.text; //IP des Zielrechners
      try
 ClientSocket2.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket2.active := true; //Aufbau der Verbindung
      end;
      end;
if ip4Edit.text<>''
 then begin
 ClientSocket3.Port := 23; //Festlegung des Ports
 ClientSocket3.Host := ip4Edit.text; //IP des Zielrechners
      try
 ClientSocket3.active := true; //Aufbau der Verbindung ?
      finally
 ClientSocket3.active := true; //Aufbau der Verbindung
      end;
      end;
   x:=1;
   Form1.StatusBar1.Panels[4].Text:= 'Aktualisierung läuft';
  end;
 if x=2 then
   Form1.StatusBar1.Panels[4].Text:= '';
end;

procedure TForm1.ClientSocket3Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
 MemoFail.Lines.Add(ip4Edit.text+' Antw. nicht');
end;

procedure TForm1.ClientSocket2Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
 MemoFail.Lines.Add(ip3Edit.text+' Antw. nicht');
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
 MemoFail.Lines.Add(ip2Edit.text+' Antw. nicht');
end;

procedure TForm1.ClientSocketError(Sender: TObject;
  Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  var ErrorCode: Integer);
begin
 MemoFail.Lines.Add(ip1Edit.text+' Antw. nicht');
end;

end.
bin neu, also nicht mit Verbesserungsvorschlägen bombardieren ^^ ;)

Evian 25. Mai 2004 17:46

Re: bekomme asynchronous socket error 10060 nicht uner Kontr
 
Wenn du in der onErrorevent Procedure, nach der Fehlerbehandlung den Errorcode auf 0 setzt gibt es(ausser im Debugmodus) keine Exception mehr. Probier das mal aus!

gruss


Evian

DerSlon 11. Jun 2004 17:36

Re: bekomme asynchronous socket error 10060 nicht uner Kontr
 
Tatsache!!!
Super hat mir auch sehr geholfen.

ppirokke 12. Jun 2004 23:55

Re: bekomme asynchronous socket error 10060 nicht uner Kontr
 
Ich bedank mich auch nochma herzlich, hat geklappt! :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz