Client<>Socket Chat Problem
Hi,
ich habe einen chat mit dieser anleitung programmiert und auf einem rechner funktoniert alles prima. Wenn ich jetzt aber auf einem rechner server und einen client laufen lasse und auf einem anderen rechner(im netzwerk) einen zweiten client habe geht nur der teil, der auf dem rechner mit dem server ist alles prima mit rechner 2 kann ich micht nicht verbinden! Verbindung haben beide - sie sind im selben Heimnetzwerk - und ich habe rechner 1 (der mit server) auch angepingt: ging. Port ist 7777 denke der wird nicht belegt sein... Wäre toll wenn ihr mir helfen könntet... LG Christopher |
AW: Client<>Socket Chat Problem
An welche IP Adresse ist der Server denn gebunden? Wenn er auf 127.0.0.1 oder localhost läuft, kann man nur vom gleichen Rechner aus eine Verbindung aufbauen.
|
AW: Client<>Socket Chat Problem
Zitat:
der client, der auf dem selben rechner wie der sever ist hat keine probleme mit dem verbinden aber ich kann beim server nicht einstellen welche ip er haben soll... wie auch... LG Christopher |
AW: Client<>Socket Chat Problem
Zitat:
Allerdings, wenn dir das nicht bewusst ist, hast du wahrscheinlich 0.0.0.0 . Dein Link funktioniert nicht, deswegen weiß ich nicht, was du geschrieben hast. Edit: Ah, jetzt habe ich den Fehler in der Link-Url gesehen... Edit2: Ui, Das Tut....naja. Wie sieht es bei dir mit Firewall aus. Es hilft auch immer mal existierende Programme (z.B. Telnet) zum testen zu nehmen |
AW: Client<>Socket Chat Problem
Zitat:
Hier noch mein quellcode: |
AW: Client<>Socket Chat Problem
Delphi-Quellcode:
Vielleicht hilft das noch :)
unit CChatServer;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ScktComp, StdCtrls; type TCC = class(TForm) ServerSocket1: TServerSocket; procedure FormCreate(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private-Deklarationen } public { Public-Deklarationen } end; var CC: TCC; implementation {$R *.dfm} procedure TCC.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var msg: String; i : Integer; begin msg:= Socket.ReceiveText; //Empfangene Nachricht wird in "msg" gespeichert for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do //Die Nachricht wird an alle verbundenen Clients gesendet ServerSocket1.Socket.Connections[i].SendText(msg); end; procedure TCC.FormCreate(Sender: TObject); begin ServerSocket1.Open; end; end. |
AW: Client<>Socket Chat Problem
Und wie sieht der Client aus?
|
AW: Client<>Socket Chat Problem
Hier noch der Client
Delphi-Quellcode:
unit CClient;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp, XPMan; type TForm1 = class(TForm) GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; EdNick: TEdit; EdIP: TEdit; EdPort: TEdit; Button1: TButton; XPManifest1: TXPManifest; memosend: TMemo; Label4: TLabel; Btnsend: TButton; MemoReceive: TMemo; ClientSocket1: TClientSocket; procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); procedure BtnsendClick(Sender: TObject); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Host:=EdIP.Text; ClientSocket1.Port:=StrToInt(EdPort.Text); ClientSocket1.Open; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var msg:string; begin msg:=Socket.ReceiveText; //Der Empfangene Text wird in der Variable msg gespeichert MemoReceive.Lines.Add(msg); //Die Nachricht wird in das Memo eingefügt end; procedure TForm1.BtnsendClick(Sender: TObject); var msg: String; begin if UpperCase(EdNick.Text) = 'ADMINISTRATOR' then begin ShowMessage('Please choose an another nickname.'); end else begin msg:=MemoSend.Text; //Text zum Senden wird in "msg" gespeichert msg:= EdNick.Text +': '+msg; //Hinzufügen von Nickname ClientSocket1.Socket.SendText(msg); //Senden der Nachricht MemoSend.Clear; end; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin BtnSend.Enabled:=false; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin BtnSend.Enabled:=true; end; end. |
AW: Client<>Socket Chat Problem
Wäre noch die Frage, was du im OI eingestellt hast.
Aber um ein Fehler in Deinem Programm auszuschließen, such dir mal Programme mit ähnlichen Funktionen und ob es bei denen klappt, oder besser noch, substituiere eines deiner Programme mit einem funktionierenden anderen Programm (z.B. Client --> Telnet) und teste. |
AW: Client<>Socket Chat Problem
Hat zwar nichts mit dem eigentlichen Problem zu tun, aber:
Delphi-Quellcode:
"Bitte wähle einen einen anderen Nickname"? Also entweder "an other" oder nur "another". :mrgreen:
ShowMessage('Please choose an another nickname.');
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz