![]() |
Error 10049 kann nicht connecten
Also ich wollte mit socket etwas machen. Grob gesagt sollen records hin und her geschickt werden. früher habe ich dass mit indy gemacht, aber dass wurde zu kompliziert und deswegen versuche ich jetzt sockets. hier der relevante code:
Client:
Delphi-Quellcode:
Server
procedure Tform1.loginbuttonClick(Sender: TObject);
var rec1:iprec; begin clientsock.Port:=628; clientsock.Host:='127.0.0.1'; clientsock.active:=true; rec1.clientip:=ip; rec1.clienthost:=host; clientsock.open; clientsock.Socket.SendBuf(rec1,sizeof(rec1)); showmessage('hallo'); clientsock.close; end;
Delphi-Quellcode:
Ich hoffe ihr könnt mir helfen.
procedure Tform1.bsvcontrClick(Sender: TObject);
begin if bsvcontr.caption='Server ist online' then begin bsvcontr.caption:='Server ist offline'; serversock.active:=false; serversock.socket.close; end else begin if bsvcontr.caption='Server ist offline' then begin bsvcontr.caption:='Server ist online'; serversock.Port:=628; serversock.active:=true; serversock.Open; end; end; end; Edit: delphisource gekenzeichnet |
Re: Error 10049 kann nicht connecten
Erstmal herzlich Willkomen im Forum. :hello:
Zur besseren lesbarkeit gibt es oben im Editor die Schaltfläche "Delphi-Source" oder durch eingabe von [ delphi ] und [ /delphi ]. Um mit den Client-Server-Socket-Komponenten Daten zu versenden gibt es ein paar Ereignisse. Anstatt sofort die Daten mit dem Client zu versenden, solltest Du erst warten. bis die Verbindung aufgebaut wurde, dafür ist das Ereigniss OnConnect zuständig. Außerdem muß natürlich erst der Server gestartet sein. Anstatt den Status vom String abhängig zu machen, verwende:
Delphi-Quellcode:
Zum lesen mußt Du im Server auf das OnRead-Ereignis reagieren.
if serversock.Active then
begin bsvcontr.Caption := 'Server ist online'; ... ... end else begin bsvcontr.Caption := 'Server ist offline'; ... ... end; |
Re: Error 10049 kann nicht connecten
Ich hab das mal ebend verändert und nun sagt er mir, 10053 errorcode und beim quasi, dass er nicht empfangen konnte.
Diese wird wohl dabei auch noch wichtig sein
Delphi-Quellcode:
procedure Tform1.serversockClientWrite(Sender: TObject;
Socket: TCustomWinSocket); var rec1:iprec; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); showmessage('hallo'); end; |
Re: Error 10049 kann nicht connecten
Du versuchst gerade im OnWrite-Ereignis zu lesen.
|
Re: Error 10049 kann nicht connecten
Er sagt mir immer noch 1053 und danach accsess violation. Ich hab erstmal in onclientconnect geschrieben, ich hoffe dass war richtiger.
Delphi-Quellcode:
procedure Tform1.serversockClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end; |
Re: Error 10049 kann nicht connecten
Empfangen gehört in OnRead wenn der ServerType auf stNonBlocking eingestellt ist (standard). Auch der ClientType muß dann auf ctNonBlocking eingestellt sein.
Außerdem siehe ![]()
Delphi-Quellcode:
procedure TFormServer.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket); var rec1: iprec; z: integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z := serversock.socket.ActiveConnections; stringgrid.cells[z,1] := rec1.clientip; stringgrid.cells[z,2] := rec1.clienthost; end; |
Re: Error 10049 kann nicht connecten
funktioniert immer noch nicht. er gibt mir jetzt folgende fehlermeldungen:
client socket error 10053 danach socket error 10054 server: socket error 10057 |
Re: Error 10049 kann nicht connecten
Du trennst anscheinend die Client-Server-Verbindung, bevor die Daten gesendet werden.
Welche TClientSocket und welche TServerSocket-Ereigniss verwendest Du jetzt? Wie sieht der Quelltext der einzelnen Ereignisse aus, Eigenschaften? |
Re: Error 10049 kann nicht connecten
server
Delphi-Quellcode:
client
procedure Tform1.serversockClientRead(Sender: TObject;
Socket: TCustomWinSocket); var rec1:iprec; z:integer; begin serversock.Socket.ReceiveBuf(rec1,sizeof(rec1)); z:=serversock.socket.ActiveConnections; stringgrid.cells[z,1]:=rec1.clientip; stringgrid.cells[z,2]:=rec1.clienthost; end;
Delphi-Quellcode:
Und sonst greift ncihts auf die Sockets zu. Komischerweise hab ich jetzt wieder den weiterobengenannten fehler mit 10053 und kan nciht senden.
procedure Tform1.loginbuttonClick(Sender: TObject);
var rec1:iprec; begin clientsock.Port:=628; clientsock.Host:='127.0.0.1'; clientsock.active:=true; end; procedure Tform1.clientsockConnect(Sender: TObject; Socket: TCustomWinSocket); var rec1:iprec; begin rec1.clientip:=ip; rec1.clienthost:=host; clientsock.open; clientsock.Socket.SendBuf(rec1,sizeof(rec1)); end; |
Re: Error 10049 kann nicht connecten
Delphi-Quellcode:
procedure TForm1.ServerSocketClientConnect(Sender: TObject;
Socket: TCustomWinSocket); begin StatusBar.Panels[0].Text := 'Server verbunden'; end; procedure TForm1.ServerSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin StatusBar.Panels[0].Text := 'Server getrennt'; end; procedure TForm1.ServerSocketAccept(Sender: TObject; Socket: TCustomWinSocket); begin with ListBox.Items do begin Add('Client akzeptiert:'); Add('> Host : ' + Socket.RemoteHost); Add('> Adresse: ' + Socket.RemoteAddress); end; end; procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket.Open; EditHostChange(nil); end; procedure TForm1.ButtonConnectClick(Sender: TObject); begin with ClientSocket do begin Host := EditHost.Text; Open; end; end; procedure TForm1.EditHostChange(Sender: TObject); begin ButtonConnect.Enabled := not (EditHost.Text = '') and not ClientSocket.Active; end; procedure TForm1.ClientSocketConnect(Sender: TObject; Socket: TCustomWinSocket); var Text: string; begin ButtonConnect.Enabled := False; ButtonDisconnect.Enabled := True; EditHost.Enabled := False; StatusBar.Panels[1].Text := 'Client verbunden'; Text := Socket.LocalHost; Socket.SendBuf(PChar(Text)^, Length(Text)); end; procedure TForm1.ClientSocketDisconnect(Sender: TObject; Socket: TCustomWinSocket); begin ButtonConnect.Enabled := True; ButtonDisconnect.Enabled := False; EditHost.Enabled := True; StatusBar.Panels[1].Text := 'Client getrennt'; end; procedure TForm1.ButtonDisconnectClick(Sender: TObject); begin ClientSocket.Close; end; procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket); var RecText: string; begin SetLength(RecText, Socket.ReceiveLength); Socket.ReceiveBuf(PChar(RecText)^, Socket.ReceiveLength); ShowMessage(RecText); end; procedure TForm1.FormDestroy(Sender: TObject); begin ClientSocket.Close; ServerSocket.Close; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 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