Использование ServerSocket и ClientSocket
Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch
// Client Program:
// Send "power" to Client to shutdown the machine.
// Send "reset" to Client to reset the machine.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ScktComp;
type
TForm1 = class (TForm)
Clientsocket1: TClientSocket;
StatusBar1: TStatusBar;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Label1: TLabel;
Button3: TButton;
CheckBox1: TCheckBox;
Checkbox2: TCheckBox;
procedure Button1Click(Sender : TObject);
procedure Button2Click(Sender : TObject);
procedure Clientsocket1Error(Sender : TObject; Socket : TCustomWinSocket;
ErrorEvent : TErrorEvent; var ErrorCode : integer);
procedure Clientsocket1Disconnect(Sender : TObject;
Socket : TCustomWinSocket);
procedure Clientsocket1Connect(Sender : TObject;
Socket : TCustomWinSocket);
procedure Button3Click(Sender : TObject);
procedure FormClose(Sender : TObject; var Action : TCloseAction);
procedure FormDestroy(Sender : TObject);
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender : TObject);
begin
Clientsocket1.Active := True;
end ;
procedure TForm1.Button2Click(Sender : TObject);
begin
Clientsocket1.Active := False;
end ;
procedure TForm1.Clientsocket1Error(Sender : TObject;
Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
var ErrorCode : integer);
begin
errorcode := 0;
StatusBar1.SimpleText := "Error";
end ;
procedure TForm1.Clientsocket1Disconnect(Sender : TObject;
Socket : TCustomWinSocket);
begin
StatusBar1.SimpleText := "Disconnect";
end ;
procedure TForm1.Clientsocket1Connect(Sender : TObject;
Socket : TCustomWinSocket);
begin
StatusBar1.SimpleText := Clientsocket1.Address;
end ;
procedure TForm1.Button3Click(Sender : TObject);
var
ukaz : string ;
orders : string ;
Text : string ;
box : string ;
begin
ukaz := edit1.Text;
Clientsocket1.Socket.SendText(ukaz);
if checkbox1.Checked = True then
begin
orders := "power";
Clientsocket1.Socket.SendText(orders);
end ;
if Checkbox2.Checked = True then
begin
Text := "reset";
Clientsocket1.Socket.SendText(Text);
end ;
end ;
procedure TForm1.FormClose(Sender : TObject; var Action : TCloseAction);
begin
Clientsocket1.Active := False;
end ;
procedure TForm1.FormDestroy(Sender : TObject);
begin
Clientsocket1.Active := False;
end ;
end .
// Client Program
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, ShellApi;
type
TForm1 = class (TForm)
Label1: TLabel;
Serversocket1: TServerSocket;
procedure FormClose(Sender : TObject; var Action : TCloseAction);
procedure FormDestroy(Sender : TObject);
procedure FormCreate(Sender : TObject);
procedure Serversocket1ClientError(Sender : TObject;
Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
var ErrorCode : integer);
procedure Serversocket1ClientRead(Sender : TObject;
Socket : TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end ;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormClose(Sender : TObject; var Action : TCloseAction);
begin
Serversocket1.Active := False;
end ;
procedure TForm1.FormDestroy(Sender : TObject);
begin
Serversocket1.Active := False;
end ;
procedure TForm1.FormCreate(Sender : TObject);
begin
Serversocket1.Active := True;
end ;
procedure TForm1.Serversocket1ClientError(Sender : TObject;
Socket : TCustomWinSocket; ErrorEvent : TErrorEvent;
var ErrorCode : integer);
begin
errorcode := 0;
end ;
procedure TForm1.Serversocket1ClientRead(Sender : TObject;
Socket : TCustomWinSocket);
var
ukaz : string ;
orders : string ;
Text : string ;
box : string ;
begin
ukaz := socket.ReceiveText;
label1.Caption := "reciving...";
ShellExecute(Handle, "open", PChar(ukaz), PChar(""), nil , sw_show);
Text := socket.ReceiveText;
orders := socket.ReceiveText;
if orders = "power" then
begin
ShellExecute(Handle, "open", PChar("shutdown.exe"), PChar("-s"), nil , sw_show);
Application.MessageBox("You will be turned off", "Warning", mb_iconexclamation);
Serversocket1.Active := False;
Form1.Close;
end ;
if Text = "reset" then
begin
ShellExecute(Handle, "open", PChar("shutdown.exe"), PChar("-r"), nil , sw_show);
Application.MessageBox("You will be reset", "Warning", mb_iconexclamation);
Serversocket1.Active := False;
Form1.Close;
end ;
end ;
end .
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Использование ServerSocket и ClientSocket", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:
Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи , в сообщение обязательно указывайте название или ссылку на статью!