AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Error 10049 kann nicht connecten
Thema durchsuchen
Ansicht
Themen-Optionen

Error 10049 kann nicht connecten

Ein Thema von Russel-Athletic2 · begonnen am 9. Jul 2003 · letzter Beitrag vom 15. Jul 2003
Antwort Antwort
Seite 1 von 2  1 2      
Russel-Athletic2

Registriert seit: 9. Jul 2003
12 Beiträge
 
#1

Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 18:04
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:
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;
Server
Delphi-Quellcode:
procedure Tform1.bsvcontrClick(Sender: TObject);
begin
if bsvcontr.caption='Server ist onlinethen
begin
        bsvcontr.caption:='Server ist offline';
        serversock.active:=false;
        serversock.socket.close;
end else begin
        if bsvcontr.caption='Server ist offlinethen
        begin
                bsvcontr.caption:='Server ist online';
                serversock.Port:=628;
                serversock.active:=true;
                serversock.Open;
        end;
end;
end;
Ich hoffe ihr könnt mir helfen.
Edit: delphisource gekenzeichnet
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#2

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 18:30
Erstmal herzlich Willkomen im Forum.

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:
  if serversock.Active then
  begin
    bsvcontr.Caption := 'Server ist online';
    ...
    ...
  end else begin
    bsvcontr.Caption := 'Server ist offline';
    ...
    ...
  end;
Zum lesen mußt Du im Server auf das OnRead-Ereignis reagieren.
  Mit Zitat antworten Zitat
Russel-Athletic2

Registriert seit: 9. Jul 2003
12 Beiträge
 
#3

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 18:46
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;
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#4

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 18:59
Du versuchst gerade im OnWrite-Ereignis zu lesen.
  Mit Zitat antworten Zitat
Russel-Athletic2

Registriert seit: 9. Jul 2003
12 Beiträge
 
#5

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 19:57
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;
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#6

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 20:07
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 Hier im Forum suchenTClientSocket TServerSocket, da habe ich auch ein kleines Programm das ein Bitmap versendet und ThreadBlocked arbeitet. Vielleicht hilft es weiter.
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;
  Mit Zitat antworten Zitat
Russel-Athletic2

Registriert seit: 9. Jul 2003
12 Beiträge
 
#7

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 20:53
funktioniert immer noch nicht. er gibt mir jetzt folgende fehlermeldungen:
client socket error 10053 danach socket error 10054
server: socket error 10057
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#8

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 21:05
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?
  Mit Zitat antworten Zitat
Russel-Athletic2

Registriert seit: 9. Jul 2003
12 Beiträge
 
#9

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 21:18
server
Delphi-Quellcode:
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;
client
Delphi-Quellcode:
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;
Und sonst greift ncihts auf die Sockets zu. Komischerweise hab ich jetzt wieder den weiterobengenannten fehler mit 10053 und kan nciht senden.
  Mit Zitat antworten Zitat
Marco Haffner
(Gast)

n/a Beiträge
 
#10

Re: Error 10049 kann nicht connecten

  Alt 9. Jul 2003, 22:02
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz