Problem z połączeniem klient-serwer


(Tiger133) #1

Witacie,

no więc mam taki problem, napisałem program tylko nie wiem czemu nie mogę się połączyć ze swoim kuzynem.

Serwer :

unit Unit1f;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ScktComp, MMSystem;


type

  TForm1 = class(TForm)

    Serwer: TServerSocket;

    procedure SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form1: TForm1;


implementation


{$R *.dfm}


   procedure TForm1.SerwerClientRead(Sender: TObject; Socket: TCustomWinSocket);

var

  komenda : string;

begin


  komenda := Socket.ReceiveText;

  if komenda = 'open CD' Then

    mciSendString('Set cdaudio door open wait',nil,0,handle);


  if komenda = 'close CD' Then

    mciSendString('Set cdaudio door closed wait',nil,0,handle);


  if komenda = 'wyłącz kompa' Then

    ExitWindowsEx( EWX_SHUTDOWN,0 );


  if komenda = 'massage' Then

    MessageBox(Handle,'Siema :)','Błędny błąd',MB_OK+MB_ICONERROR);

end;


end.

Klient:

unit Unit2;


interface


uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ScktComp;


type

  TForm1 = class(TForm)

    Klient: TClientSocket;

    Edit1: TEdit;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button5: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;


var

  Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);

begin


Klient.Address := Edit1.Text;

Klient.Active := True;


end;


procedure TForm1.Button2Click(Sender: TObject);

begin

 Klient.Socket.SendText('open CD');

end;


procedure TForm1.Button3Click(Sender: TObject);

begin

 Klient.Socket.SendText('close CD');  

end;


procedure TForm1.Button4Click(Sender: TObject);

begin

    Klient.Socket.SendText('wyłącz kompa');

end;


procedure TForm1.Button5Click(Sender: TObject);

begin

    Klient.Socket.SendText('massage');

end;


end.

z drugim kompem w moim domu mogę się normalnie połączyć i zdalnie sterować. A z kuzynem nie bo on jest w innej sieci (która ma jedno ip na jakieś 400 kompów), a ja mam router który dziali sygnał na trzy kompy i tez jedno ip zewnętrzne więc jak w takim razie się połączyć ??

Z Góry thx za odpowiedzi :smiley:


(kazek31) #2

W swoim pytaniu masz odpowiedź tj; Dwie różne sieci zapory NAT te sprawy :stuck_out_tongue:

Pokombinuj z tunelowaniem łącza i przekierowaniem portów na routerze poza tym musisz znać zewnętrzny adres IP sieci twojego kuzyna.

No i co panie kolego poza tym nie zna się podstaw co ? :stuck_out_tongue: