Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi SocketFehler #10053 und 10057 (https://www.delphipraxis.net/9196-socketfehler-10053-und-10057-a.html)

Hanswurst 20. Sep 2003 09:40


SocketFehler #10053 und 10057
 
Servus
ich bin grad dabei , ein Tool für meinen Clan zu schreiben , mittlerweile bin ich bei der ChatFucnktion ..
ich verwende D7 und die nachinstallierten WinSocks , da die INDYs bei mir net so richtig funzen ..

bisher hatt immer alles wuderbar geklappt , nur jetzt meint der Server , wenn der Client ne Nachricht schreibt :
Windows-Socket-Fehler: EIne Anforderung zum Senden oder Empfangen von Daten wurde verhindert , da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem SendTo-Aufruf) keine Adresse angegeben wurde (10057) , auf API recv

und der Client meint:
Asynchroner Socketfehler #10053

was ja bedeuten würde , dass der Server den Client "unwissentlich" kickt und meckert , dass er die Daten vom Client nicht erhalten kann ...

ich weis , dass mein Problem schon in 2 Threads erwähnt wird , aber bei keinem wurde bisher eine Lösung gepostet

DANKE
CU

Hanswurst 20. Sep 2003 09:49

Re: SocketFehler #10053 und 10057
 
Ich nochmal
jetzt hab ich mir mal schnell 2 Proggis , einer mit WinSockClient und einen mit Server zusammengebaut , und es kommt der gleiche Fehler ..
nur jetzt meckert nurnoch der Server und der Client disconnected schön brav ..

Client:
Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host:=edit1.Text;
ClientSocket1.Port:=SpinEdit1.Value;
ClientSocket1.Active:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClientSocket1.Socket.Close;
ClientSocket1.Active:=false;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(ClientSocket1.Socket.ReceiveText);
end;
Server:
Code:
rocedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:=SpinEdit1.Value;
ServerSocket1.Active:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Close;
ServerSocket1.Active:=false;
end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(ServerSocket1.Socket.ReceiveText);
end;
irgendwie seltsam ...
das einzige , was zum disconnecten da ist , ist jeweils der Button2
sonst nichts ..

CU

ATwardz 23. Sep 2003 21:49

Re: SocketFehler #10053 und 10057
 
Hi,
ich habe es zwar noch nicht ausprobiert aber schreibe einfach anstatt:

Delphi-Quellcode:
Memo1.Lines.Add(ServerSocket1.Socket.ReceiveText);
Delphi-Quellcode:
Memo1.Lines.Add(Socket.ReceiveText);
Ich hatte zumindest früher schon dieses Problem und das war die Lösung auf die ich erst nach Stunden gekommen bin! Warum der das nicht akzeptiert, keine Ahnung! Muss man halt so hinnehmen! Aber das müsste eigentlich der Fehler sein!

@wardz

ATwardz 23. Sep 2003 21:54

Re: SocketFehler #10053 und 10057
 
Ach ja eines noch wieso vertauschts du eigentlich Server und Client, dann fehlen dir doch schöne Proceduren wie connecting,Error,OnRead,....

Wieso machst du das nicht so von der Art her?Nur ein Tipp!

Server:

Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Server.Port:=25544;
  server.Open;
end;

procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  MessageDlg(Socket.ReceiveText, mtInformation, [mbOK], 1);
  Form1.Caption:='nachricht';
end;

procedure TForm1.ServerClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Form1.Caption:='connected';
end;

procedure TForm1.ServerClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Form1.Caption:='Disconnected';
end;
CLIENT:

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);
begin
  client.Port:=25544;{muss der gleiche sein}
  client.Address:=Edit1.Text;{IP oder PC-name}
  client.Open;
end;

procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  Form1.Caption:='connected';
end;

procedure TForm1.ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Form1.Caption:='disconnected';
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Client.Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  client.Socket.SendText(Edit2.Text);
end;
@wardz

T-Olli 24. Sep 2003 11:30

Re: SocketFehler #10053 und 10057
 
Du hast nicht zufällig gerade eine Personal Firewall in Betrieb genommen. An so einem blöden Fehler hab ich auch schon mal länger gesucht.

Hanswurst 26. Sep 2003 12:54

Re: SocketFehler #10053 und 10057
 
Servus
@T-Olli
ne Firewall hab ich momentan NICHT drauf , da NIS 2003 nach nem Update in WindoofXP ne "Startverzögerung" einbaut ..

normales Booten:
Einschaltknopf drücken , Bios , ggf (SCSI-, Raid-, IDE-) Controller , WindowsXP Bootscreen , Startbildschirm (~10 Sec) , "HochfahrSound" , Hintergrundproggis

mit Update:
Einschaltknopf drücken , Bios , ggf (SCSI-, Raid-, IDE-) Controller , WindowsXP Bootscreen , Startbildschirm (~60 Sec) , HIntergrundproggis , nach ca 5 Min "HochfahrSound" und erst danach kann man andere Proggis ausführen ..

und ZoneAlarm macht eh NUR Probleme ..

@ATwardz
1.wieso habe ich Client und Server vertauscht ??? und warum sollen dann die "schönen" Prozeduren wie OnRead , OnError usw wegfallen ???
2.will ich nicht wie in deinem Bsp die Empfangene Nachricht in eine MsgBox , sondern in ein Memo/RTF-Feld schreiben
oder meinst du , warum ich die nicht gepostet habe ?? ich hab die Errorbehandlung usw nicht gepostet , da die ja NICHTS mit dem Problem zu tun hat ..

trotzdem ein vorläufiges Danke an euch
CU

ATwardz 26. Sep 2003 13:56

Re: SocketFehler #10053 und 10057
 
Hast du serversocket1 mal weg gelassen, nei mir funkst dein code dann!

Hanswurst 27. Sep 2003 09:30

Re: SocketFehler #10053 und 10057
 
Servus
ich hab mal ClientSocket1 und ServerSocket1 aus dem Code entfernt ..
jetzt gibt mir der Server trotzdem noch die selbe Fehlermeldung , nur nichtmehr der Client und wenn ich vom Client zum Server was schreibe , dann ist mein Client einfach disconnected ...

@ATwardz
könntest du mir mal bitte deinen Code/einen Teil davon schicken ??
nicht , dass es an meinem PC liegt , was aber eher unwahrscheinlich ist ..
bei Windows weis man ja nie ;)

Danke
CU

ATwardz 27. Sep 2003 14:00

Re: SocketFehler #10053 und 10057
 
Liste der Anhänge anzeigen (Anzahl: 1)
Der Server hat keine Adresse an die er seine Nachricht schicken kann,
daher kommt immer die Fehlermeldung!
Leider habe ich keine Möglichkeit gefunden vom Server aus zu senden!
Ich würde an deiner Stelle ein Programm schreiben welches jeweils einen server und
einen Client hat!
Ich habe ein Beispiel Programm beigefügt!
Wenn du dich auf einen Port festlegen willst kannst du die Server auch schon
beim Formcreate öffnen, wichtig ist halt nur das du für beide verbindungen einen
unterschiedlichen Port benutzt!

@wardz

:cheers:

Hanswurst 28. Sep 2003 17:12

Re: SocketFehler #10053 und 10057
 
Danke ATWardz für das Beispiel !!

nur hast du die Unit1.pas vergessen :freak:

auf gutes programmieren :coder: :cheers:

DymonD 11. Mär 2006 11:35

Re: SocketFehler #10053 und 10057
 
Hi,
Ich hab auch ein Socket Fehler #10057 und weiß nicht, woher die kommen. ich hab schon alles mögliche ausprobiert, aber scheint nicht zu gehen.
Hinzu kommt noch, dass ich vor einiger Zeit wunderbar damit arbeiten konnte. Hier mal ein bisschen Source...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Address := Edit1.Text; //IP-Adresse
  clientsocket1.Active := true;
  clientsocket1.Open; //beides oder nur eins von (active und open)?
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Label1.Caption := ServerSocket1.Socket.ReceiveText;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientSocket1.Socket.SendText(Edit2.Text);
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage(ServerSocket1.Socket.RemoteAddress);
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ShowMessage('Try to connect');
end;

procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
  ShowMessage('No Connect');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  serversocket1.port := 10025;
  serversocket1.Active := true;
  Serversocket1.Open;
end;
Sogar mit sich selbst verbindet er nicht (localhost)...

THX schonmal im voraus..

Muetze1 11. Mär 2006 12:23

Re: SocketFehler #10053 und 10057
 
Grundlegend ist beiden Poster mit dem Problem nicht bewusst, dass ein Serversocket mehrere Clients verbunden hat. Somit stellt sich doch die Frage an wen der ServerSocket die Daten schicken soll, welche an
Delphi-Quellcode:
ServerSocket1.Socket.SendText('blubb');
übergeben werden. Hier muss der Socket des Clients übergeben werden, an welchen gesendet werden soll.

Und grundsätzlich wird in dem letzten Code wieder direkt auf die Komponenten zugegriffen, obwohl in dem Thread zuvor schon 2malig darauf hingewiesen wurde, dass man die Socket Instanz nutzen sollte, die den Events mit "Socket" übergeben wird.

DymonD 12. Mär 2006 10:26

Re: SocketFehler #10053 und 10057
 
hmm ich hab das eigentlich immer so gemacht und es hat hingehauen :roll:
gut ich mach das mal anders.. und außerdem sendet der Clien immer den text an den server ....

DymonD 25. Jul 2007 21:07

Re: SocketFehler #10053 und 10057
 
Blöd.

Delphi-Quellcode:
procedure TForm1.ServerClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
showmessage(Socket.ReceiveText);
end;
in der Prozedur wird schon von Anfang an auf ServerSocket1 (hier einfach Server) zugegriffen. Daher konnte ServerSocket1.Socket.blah nix mehr damit anfangen. Also ServerSocket1 weggelöscht und dann ging's... Rätselhaft, aber funzt.

Es ist schon komisch, einen Beitrag von jemandem zu lesen, der das gleiche Problem hat und dann festzustellen, dass es sein eigener Beitrag ist, vor einem Jahr... :D

Muetze1 25. Jul 2007 21:54

Re: SocketFehler #10053 und 10057
 
... auch schön zu lesen, dass meine Beiträge im Endeffekt richtig waren und zum Erfolg führen...

Manado 27. Jun 2008 17:28

Re: SocketFehler #10053 und 10057
 
Hallo!
Interessanter Thread, gleiche Probleme sind bei mir auch aufgetaucht!

Was aber jetz noch unbeantwortet gebliben ist - wie stelle ich die Client-Adresse ein, wenn der Server zum Client was schicken soll?

Ich will mit
Delphi-Quellcode:
Serversocket1.Socket.SendText('Ich bin ein gesendeter Text vom Server');
an einen Client der im Netzwerk auf adresse 192.168.2.5 läuft, was schicken, doch es kommt ein fehler.

Die Kommunikation Client-->Server geht köstlich.

Gruss

MSSSSM 27. Jun 2008 20:55

Re: SocketFehler #10053 und 10057
 
Delphi-Quellcode:
for i:=0 to ServerSocket1.ActiveConnections-1 do
ServerSocket1.Connections[i].SendText('hallo');


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 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