Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Interner Netzwerkchat klappt nicht (Keine Fehlermeldung)

  Alt 3. Feb 2010, 18:54
Hallo, ich habe gerade einen Chat programmiert, der im internen Netzwerk laufen soll.
Dazu habe ich einen Server erstellt und einen Client, die Benutzeroberfläche. Nur klappt das leider nicht, wenn ich von einem anderen PC in den Chat will, als von dem, auf dem der Server läuft.

Serverprogrammcode (Das wichtigste):

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var Text:string;
i: Integer;
begin
Text:=Socket.ReceiveText;
For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [I] do
if (Connected) then SendText(Text);
end;
end;

So, und der eigentliche Chat besteht aus einem Feld, in welches man die IP eintragen soll, einem Nachrichteneingabefeld, einem Senden- und einem Verbinden- button, einem "Verlaufs-RichEdit" und natürlich einem Client.

Verbindenbutton:
Delphi-Quellcode:
procedure TMessenger.ConnectClick(Sender: TObject);
begin
     Client1.host:=Servername.Text;
     Client1.Active:=True;
     Send.Enabled:=True;
     delay(200);
     Nachricht:=Nickname+' ist der Sitzung beigetreten';
     Client1.Socket.SendText(Nachricht);
end;

Sendenbutton:

Delphi-Quellcode:
if Text.text='then exit;
Client1.Socket.SendText(Nickname + ': ' + Text.text);
Text.clear;
"Text" ist das Eingabefeld für die Nachricht...

Delphi-Quellcode:
procedure TMessenger.Client1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var E,N,M:string;
    i:integer;
begin
     Show;
     Application.Restore;
     if Messenger.Left=Screen.Width then begin
     while Messenger.Left<>Screen.Width-Messenger.Width do
     begin
          if Messenger.Left>Screen.Width-Messenger.Width then
          begin
          Messenger.Left:=Messenger.Left-5;
          end;
     end;
     end;
     if Messenger.Left>Screen.Width-Messenger.Width then
     begin
          Messenger.Left:=Screen.Width-Messenger.Width;
     end;
     E:=(Client1.Socket.ReceiveText);
     i:=1;
     while E[i]<>' do i:=i+1;
     N:=E;
     M:=E;
     //Name und eigentliche Nachricht werden getrennt
     delete(M,1,i);
     delete(N,i+1,Length(N));
     Verlauf.SelAttributes.Color:=clred;
     Verlauf.Lines.Add(N);
     Verlauf.SelAttributes.Color:=clblack;
     Verlauf.Lines.Add(M);
end;

Wenn ich den Server nun auf dem PC mit 192.168.1.101 starte und auf dem gleichen Computer den Chat öffne, dann klappt das Ganze wunderbar. Ich hab im Server ein Memo, welches alle Daten auflistet und dort kommt auch alles an.
Ein anderer PC, der unter "Netzwerk" angezeigt wird, funktioniert jedoch nicht. Ich geb die IP des Servers ein und klicke auf "Verbinden", doch es geschieht gar nichts. Der Server merkt nichts, der Chat spuckt aber auch keine Fehlermeldung aus, also wird der Server wahrscheinlich gefunden.

Kann mir jemand sagen, wo der Fehler ist?

Liebe Grüße!
  Mit Zitat antworten Zitat