Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Delphi Socket components - assynchroner fehler (https://www.delphipraxis.net/136712-delphi-socket-components-assynchroner-fehler.html)

qwertz543221 6. Jul 2009 19:41


Delphi Socket components - assynchroner fehler
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo ich möchte zwischen zwei delphi anwendungen - späater auf 2 pcs - daten (im moment noch texte) hin und her senden. dazu verwende ich die tserversocket/tclientsocket.
woran könnte es liegen, dass ich zzt einen asynchronen fehler bekomme?

assynchron heißt doch, dass die eine seite nichts empfängt/senden kann?

Delphi-Quellcode:
procedure TForm1.ComboBox1Select(Sender: TObject);
var i:integer;
begin
i:=combobox1.ItemIndex;
if i=0
  then begin
  art:='Server';
  serversocket1.Port:=600;
  serversocket1.open;
  button1.Enabled:=false;
  end
    else begin
    art:='Client';
    ClientSocket1.Host := edit1.Text; // Setzt die Ip-Adresse des Servers
    clientsocket1.Port:=600;
    ClientSocket1.open; // Verbindet den Clienten



    button1.Enabled:=true;
    end;
form1.Caption:=art;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
art:='';
form1.Caption:='';
memo1.Clear;
memo2.clear;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;


end;

procedure TForm1.Button1Click(Sender: TObject);
begin

if art='Server'
   then
begin
Memo2.lines.add(Memo1.text);
serversocket1.Socket.Connections[0].SendText(Memo1.text);
memo1.Clear;
end
  else
  if art='Client'
    then
    begin
    Memo2.lines.add(Memo1.text);
    clientsocket1.Socket.SendText(Memo1.text);
    memo1.Clear;
    end;

end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
if art='Server'
  then memo2.Lines.Add('Client:' + socket.receivetext)
    else memo2.Lines.Add('Server:' + socket.receivetext);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:longint;
begin
clientsocket1.clienttype:=ctblocking;

listbox1.Clear; //Alte Einträge löschen
clientsocket1.Host := edit1.text; //Sagt dem Clientsocket, welcher Host angepingt werden soll
i:=strtoint(edit3.text);
while i<=strtoint(edit4.Text) do
begin
try
clientsocket1.Port := i; // der Port wird gesetzt
clientsocket1.open; //Versuch zu verbinden
clientsocket1.Close; //Sollte man so weit gekommen sein, wird die Verbindung wieder geschlossen
listbox1.Items.add('Port ' + inttostr(i) + ' ist offen'); //Meldung, dass Port offen
application.ProcessMessages; //Messages abarbeiten
except
// Alles ab nun wird ausgeführt, wenn die Verbindung fehlschlug
application.ProcessMessages; //Messages abarbeiten
listbox1.Items.add('Port ' + inttostr(i) + ' ist geschlossen'); //Meldung, dass Port zu
end; // Ende den "Try-Bereiches"
i:=i+1;
end; // Ende der Schleife

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
clientsocket1.Active:=false;
serversocket1.Active:=false;
end;

Zacherl 6. Jul 2009 19:52

Re: Delphi Socket components - assynchroner fehler
 
Zitat:

Zitat von qwertz543221
assynchron heißt doch, dass die eine seite nichts empfängt/senden kann?

Nene, asynchron ist nur "non blocked". Sendest du Daten über ein "blocking" Socket, friert deine Anwendung so lange ein, bis die Daten gesendet wurden. Das Asynchrone ist, dass das Socket deine Anwendung nicht blockiert. Zudem werden halt per Window Message Events ausgelöst, wenn neue Daten angekommen sind etc, was du beim "blocking" z.b. in einem Thread selbst realisieren musst.

Nenne uns doch bitte mal die Fehler nummer, welche in der Fehlermeldung enthalten ist. Damit lässt sich feststellen, welche Art von Fehler aufgetreten ist.

qwertz543221 6. Jul 2009 19:58

Re: Delphi Socket components - assynchroner fehler
 
ok danke für die rückmeldung
das ganze ist zwar ein programm - 2x gestartet - aber auf der clientseite zeigt er folgendes an:
Zitat:

windows-socket-fehler: die angeforderte adresse ist in diesem kontext ungültig(10049),auf API 'connect'
der quelltext liegt dem ersten beitrag von mr bei


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