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!