Einzelnen Beitrag anzeigen

qwertz543221
(Gast)

n/a Beiträge
 
#1

Delphi Socket components - assynchroner fehler

  Alt 6. Jul 2009, 19:41
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;
Angehängte Dateien
Dateityp: exe clientserver_169.exe (125,8 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat