Entwickler-Ecke

Internet / Netzwerk - Netzwerk Chat


Arbengie - Do 14.04.11 14:29
Titel: Netzwerk Chat
Hi, ich versuche gerade einen kl. Chat zu machen, doch ich habe folgendes Problem:
Wenn der Client eine Nachricht an den Server schickt, wird diese nur im Server angezeigt, aber nicht im Clienten.

Server:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TfrmMain.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  i: Integer;
begin
  Memo.Lines.Add(Socket.ReceiveText);
  for i := 0 to server.Socket.ActiveConnections - 1 do
    server.Socket.Connections[i].SendText(Socket.ReceiveText);
end;


Client:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TfrmMain.ClientOnRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo.Lines.Add(Socket.ReceiveText);
end;


Kann wer helfen? :)


Nersgatt - Do 14.04.11 14:37

Du solltest beim Server vermutlich ReceiveText nur einmal aufrufen und in einer Variablen Zwischenspeichern. Dann kannst Du den Inhalt der Variablen ins Memo einfügen und an die Clients ausschicken.


Narses - Do 14.04.11 14:39

Moin!

user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Du solltest beim Server vermutlich ReceiveText nur einmal aufrufen und in einer Variablen Zwischenspeichern. Dann kannst Du den Inhalt der Variablen ins Memo einfügen und an die Clients ausschicken.
Jup, der Tipp ist gut. :zustimm: Und hier gibt´s noch ein paar mehr davon [http://www.delphi-library.de/topic_Minimaler+LANInternetChat+mit+TServerTClientSocket_60744.html]. :les: :think:

cu
Narses


Arbengie - Do 14.04.11 18:58

Ich hab jetzt ein Problem, das vorher nie auftritt, nämlich ich bekomme zum Server keine Verbindung mehr aufgebaut, obwohl Server und Client auf dem selben PC sind.
Port ist bei Client und Server gleich.


Delphi-Quelltext
1:
2:
3:
4:
client.Host := 127.0.0.1;
client.Port := 7777;
client.Active := true;
client.Open;


Und als Fehler wird immer 10049 ausgegeben.


FrEaKY - Mo 25.04.11 20:12

user profile iconArbengie hat folgendes geschrieben Zum zitierten Posting springen:
Ich hab jetzt ein Problem, das vorher nie auftritt, nämlich ich bekomme zum Server keine Verbindung mehr aufgebaut, obwohl Server und Client auf dem selben PC sind.
Port ist bei Client und Server gleich.


Delphi-Quelltext
1:
2:
3:
4:
client.Host := 127.0.0.1;
client.Port := 7777;
client.Active := true;
client.Open;


Und als Fehler wird immer 10049 ausgegeben.


Auf den ersten Blick: Host sollte ein String sein. Schlägt da der Compiler bei dir nicht Alarm?
Der Error Code bestätigt dies:


Quelltext
1:
2:
3:
4:
5:
6:
7:
WSAEADDRNOTAVAIL

(10049)

Cannot assign requested address. 

The requested address is not valid in its context. Normally results from an attempt to bind to an address that is not valid for the local machine, or connect/sendto an address or port that is not valid for a remote machine (e.g. port 0).