Entwickler-Ecke

Internet / Netzwerk - Problem mit dem Senden zweier Integer


Slowmo - Fr 08.07.05 16:06
Titel: Problem mit dem Senden zweier Integer
Nachdem ich nach langem Arbeiten jetzt endlich meine Indy TCP Server und Client Komponenten, habe ich ein weiteres Problem.

Sobald ich das zweite Mal einen Integer senden will kommt der Fehler "SocketError #10048 - Adress already in use", aber ich disconnecte doch nach jedem Arbeitsschritt

Hier der Quelltext für das Senden des 1.Integers

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TClient.FormCreate(Sender: TObject);
begin
tcpclient.BoundPort:=4048;
tcpclient.Host:=Host_IP;
Form1.Hide;
M_Chat.Lines.Add('Connecting...');
with TCPClient do begin
    Connect;
    try
    WriteInteger(1);
    M_chat.Lines.Add(ReadLn);
    WriteLn(Name_Client);
    Name_Host:=ReadLn;
    M_chat.Lines.Add(Name_Host+' ist der Server');
    finally
      Disconnect;
    end;
  end;
end;


Und hier für das auslesen desselben


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure THost.TCPServerExecute(AThread: TIdPeerThread);
begin
with AThread.Connection do
begin
    if ReadInteger=1 then
      begin
      M_chat.Lines.Add('Incoming Connection');
      WriteLn('Connection accepted');
      Name_Client:=ReadLn;
      WriteLn(Name_Host);
      M_chat.Lines.Add(Name_Client+' ist dem Spiel beigetreten');
      Disconnect;
      end;
end;
end;


Dann sende ich dies:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TClient.B_ChatClick(Sender: TObject);
begin
with TCPClient do begin
    Connect;
    try
    WriteInteger(3);
    WriteLn(E_Chat.Text);
    M_chat.Lines.Add(Name_Client+': '+E_Chat.Text);
    E_Chat.Text:=' ';
    finally
      Disconnect;
    end;
  end;
end;

Und wenn ihr sofort den Fehler seht und denkt "Mann ist der doof" dann bedenkt das ich ein blutiger Anfänger bin.

Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt.


ebs - Sa 09.07.05 11:44

Also mir fällt nur auf, dass du den Port 4048 für den Clienten einstellst, aber nicht für den Server. Probiers mal indem du auch den Port für den Server setzts. :D


Slowmo - Sa 09.07.05 12:10

Der Port ist für den Server schon gesetzt, der Client kann auch connecten aber nur ein Mal Daten schicken. Dann kommt dass die Adresse schon benutzt wird.