Entwickler-Ecke
Internet / Netzwerk - Fehler beim Senden eines Textes
andras - Di 14.03.06 18:07
Titel: Fehler beim Senden eines Textes
hallo!
ich hab mir mit den Socket-kompos einen server und einen clinet zusammengebastelt. wenn ich verbinde und versuche einen kurzen text zu senden kommt folgende fehlermedlung:
Quelltext
1:
| Windows-Socket-Fehler: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhinder, da des Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse eingegeben wurde (10057), auf API'getpeername' |
der host ist localhost.
die anmeldung des clients am server funktioniert.
kann mir wer helfen??
danke schon im voraus!
Moderiert von
raziel: Topic aus VCL (Visual Component Library) verschoben am Di 14.03.2006 um 19:39
Marco D. - Di 14.03.06 18:25
Tritt das Client-Ereignis OnConnect ein?
Gib mal den Code zum Senden!
andras - Di 14.03.06 18:33
ja, da tritt ein.
hier der client code:
Delphi-Quelltext
1: 2: 3:
| ClientSocket1.Open; ClientSocket1.Socket.SendText('Hallo Server! Hallo Welt!'); ClientSocket1.Close; |
nichts aufregendes.
Born-to-Frag - Di 14.03.06 18:50
andras hat folgendes geschrieben: |
ja, da tritt ein.
hier der client code:
Delphi-Quelltext 1: 2: 3:
| ClientSocket1.Open; ClientSocket1.Socket.SendText('Hallo Server! Hallo Welt!'); ClientSocket1.Close; |
nichts aufregendes. |
Woher weißt du ob er Connected ist :shock:
Mach das
Delphi-Quelltext
1: 2:
| ClientSocket1.Socket.SendText('Hallo Server! Hallo Welt!'); ClientSocket1.Close; |
Bei onConnect rein und versuchs noch mal
andras - Di 14.03.06 18:57
also, es ändert nichts.
Fighter#1 - Di 14.03.06 19:01
???
Gibst du bei beiden den/die selbe/n Port, IP an?
Steht nicht im Quelltext
andras - Di 14.03.06 19:06
port is der selbe.
host ist localhost.
ws muss ich leicht sonst noch angeben?
Fighter#1 - Di 14.03.06 19:09
bei beiden halt .open; oder .active:=True;
sonst eig. nix
andras - Di 14.03.06 19:10
beide sind .open
Fighter#1 - Di 14.03.06 20:23
Dann lass irgendwas im Connect ereignis des clients und Server passieren.
Ich schau mal nachher was Fehlercode 10053 heißt
andras - Fr 17.03.06 23:35
so, hab jetzt was passieren lassen beim onconnect-ereignis und es tritt ein. hab alles mal mit dem debugger durchgetestet. der fehler tritt beim text auf nicht beim anmelden.
Fighter#1 - Sa 18.03.06 11:16
Poste mal bitte den gesamten Code, dann kann ich schauen wo der Fehler liegt.
andras - Sa 18.03.06 13:55
hier der client:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; ClientSocket1: TClientSocket; Label1: TLabel; procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Port:=123; ClientSocket1.Host:='localhost'; ClientSocket1.Open; end;
procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption:='Verbunden'; ClientSocket1.Socket.SendText('Hallo Server! Hallo Welt!'); ClientSocket1.Close; end;
end. |
und hier der server:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp;
type TForm1 = class(TForm) ServerSocket1: TServerSocket; Label1: TLabel; Label2: TLabel; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); begin
Label1.Caption:='Anmeldung erfolgreich' end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Label2.Caption:=ServerSocket1.Socket.ReceiveText; end;
procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.Port:=123; ServerSocket1.Open; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ServerSocket1.Close; end;
end. |
Fighter#1 - Sa 18.03.06 14:15
OK das problem liegt darin das du beim Server im OnClientRead ereignis eingibst :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| ServerSocket1.Socket.ReceiveText...
Aber im OnClientRead Ereignis wird dir eine Socket (wies im Header steht Socket) gegeben. Nutze sie und die Probleme sind weg. dann sollte es da so aussehen:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin Label2.Caption:=Socket.ReceiveText; end; |
andras - Sa 18.03.06 14:38
juhuu!! es funktioniert!!!! :dance2:
DANKE!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!