Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Client<>Socket Chat Problem (https://www.delphipraxis.net/178827-client-socket-chat-problem.html)

DelphiProgrammer 30. Jan 2014 07:58

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

mjustin 30. Jan 2014 08:14

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.

DelphiProgrammer 30. Jan 2014 10:32

AW: Client<>Socket Chat Problem
 
Zitat:

Zitat von mjustin (Beitrag 1245931)
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.

? Das verstehe ich grad net wirklich...
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

sirius 30. Jan 2014 10:37

AW: Client<>Socket Chat Problem
 
Zitat:

aber ich kann beim server nicht einstellen welche ip er haben soll... wie auch...
Doch, du kannst einstellen, an welche IP er sich binden soll. Üblicherweise ist das 0.0.0.0, also alle Netzwerkadapter. Aber du kannst auch nur an 127.0.0.1 oder an 192.168.1.1 oder einer VPN-Verbindung lauschen.

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

DelphiProgrammer 30. Jan 2014 10:51

AW: Client<>Socket Chat Problem
 
Zitat:

Zitat von sirius (Beitrag 1245950)
Zitat:

aber ich kann beim server nicht einstellen welche ip er haben soll... wie auch...
Doch, du kannst einstellen, an welche IP er sich binden soll. Üblicherweise ist das 0.0.0.0, also alle Netzwerkadapter. Aber du kannst auch nur an 127.0.0.1 oder an 192.168.1.1 oder einer VPN-Verbindung lauschen.

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

firewall sollte es eig. zulassen und wo kann ich die ip denn einstellen?

Hier noch mein quellcode:

DelphiProgrammer 30. Jan 2014 10:52

AW: Client<>Socket Chat Problem
 
Delphi-Quellcode:
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.
Vielleicht hilft das noch :)

Jumpy 30. Jan 2014 11:33

AW: Client<>Socket Chat Problem
 
Und wie sieht der Client aus?

DelphiProgrammer 30. Jan 2014 13:58

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.

sirius 30. Jan 2014 18:16

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.

nuclearping 31. Jan 2014 01:24

AW: Client<>Socket Chat Problem
 
Hat zwar nichts mit dem eigentlichen Problem zu tun, aber:
Delphi-Quellcode:
ShowMessage('Please choose an another nickname.');
"Bitte wähle einen einen anderen Nickname"? Also entweder "an other" oder nur "another". :mrgreen:


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