![]() |
Chat klappt nicht
Hallo,
hab wieder mal ein Problem mit meinem Lan-Chat: Hab ihne mit folgenden Grundprozeduren aufgebaut: Server wird eröffnet:
Delphi-Quellcode:
Client kontaktiert Zielserver:
procedure TForm1.FormCreate(Sender: TObject);
begin Server.Port:=2350; Server.open; end;
Delphi-Quellcode:
Nachricht übermitteln:
{Hab mehrere dieser Radios, beispielsweise einer hier:}
procedure TForm1.Radio1Click(Sender: TObject); begin begin Client.Close; Status.Caption:='Verbinden mit 192.168.2.105'; Client.Port:=2350; Client.Host:='192.168.2.105'; Client.open; Status.Caption:='Verbunden mit 192.168.2.105'; end; end;
Delphi-Quellcode:
Und noch das Empfangen der Nachricht:
procedure TForm1.SendenClick(Sender: TObject);
begin //Nachricht ins Nachrichtenfenster: begin Nachrichten.SelAttributes.Color:=clgreen; Nachrichten.Lines.Add('Sie um ' + TimeToStr(Now)); Nachrichten.Lines.add(eingabe.text); end; //Senden an Empfänger: Status.Caption:='Sende Nachricht...'; Client.Socket.SendText(Eingabe.text); Client.Socket.RemoteHost; Status.Caption:='Nachricht gesendet'; end;
Delphi-Quellcode:
Jetzt kann ich an mich selber Nachrichten schicken, an andere PCs jedoch nicht...
procedure TForm1.ServerClientRead(Sender: TObject;
Socket: TCustomWinSocket); var Nachricht:string; vSender:string; begin Nachricht:=Socket.ReceiveText; Nachrichten.SelAttributes.Color:=clred; vSender:=Socket.RemoteAddress; case vSender[13] of '5':vSender:='Sender 1'; '2':vSender:='Sender 2'; end; Nachrichten.Lines.Add(vSender+ ' um '+TimeToStr(Now)+':'); Nachrichten.SelAttributes.Color:=clblack; Nachrichten.Lines.Add(Nachricht); end; Der Port muss am Router freigegeben sein, oder? Wenn ich das erste Mal auf einen der Radiobuttons klicke, kommt das CPU-Fenster - weiß ich nicht warum... Wo ist der Fehler? Liebe Grüße! |
Re: Chat klappt nicht
Hallo!
Was genau sagt denn die Fehlermeldung? Edit: Gabs da nicht noch eine Eigenschaft .Active die auf true gesetzt werden muss? |
Re: Chat klappt nicht
Die Fehlermeldung kommt erst viel später, Asynchroner Fehler... Findet anscheinend den Server nicht, obwohl er läuft...
|
Re: Chat klappt nicht
Firewall mal deaktiviert? Laufen Server und Client zu Testzwecken auf dem gleichen Rechner?
|
Re: Chat klappt nicht
Also so wie ich meinen alten Quelltext verstehe befindet sich der jeweilige Socket durch .open nur sozusagen im "Standby". Die Eigenschaft .Active öffnet dann erst die eigentliche Verbindung. Ich gebe dafür keine Garantie, da es schon einige Zeit her ist und ich gerade nicht testen kann obs stimmt :-D
Achso und ich würde über cmd/ipconfig nochmal sicherstellen, dass Du die richtige IP eingegeben hast :zwinker: |
Re: Chat klappt nicht
Immer das gleiche Problem: der Server kann Bugs haben, der Client kann Bugs haben und das Netz dazwischen kann Probleme haben (Firewall, DNS-Probleme,...).
Also sollte man den Client durch etwas ersetzen, das garantiert funktioniert - Telnet. Eingabeaufforderung öffen und folgendes eingeben:
Code:
Nur wenn jetzt keine Fehlermeldung kommt, ist der Server prinzipiell bereit eine Verbindung anzunehmen.
C:\> telnet localhost 2350
Danach kannst du einige Zeichen eintippen und schauen wie der Server reagiert. Telnet zeigt die auch alle Daten an, die vom Server kommen. Du kannst das dauerhaft in deinem Gedächtnis abspeichern: Wenn eine Kommunikation zwischen zwei Programmen hergestellt werden soll, dann beginnt man immer mit einem Tool, dass garantiert funktioniert. Das gilt für TCP/IP genauso wie für die serielle Schnittstelle. Wenn ich z.B. ein Problem mit FTP habe, dann verwende ich immer Telnet servername 21. Kommt keine Verbindung zustande, braucht man mit Indy-Komponenten gar nicht weitermachen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz