Показать сообщение отдельно
  #3  
Старый 08.07.2010, 21:20
Dimakrat Dimakrat вне форума
Прохожий
 
Регистрация: 07.07.2010
Сообщения: 8
Репутация: 10
По умолчанию полный код.

на каждом приложении по две формы использую, вот коды где собственно сами сервер и клиент сокет.
клиент:
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm2 = class(TForm)
    ClientSocket: TClientSocket;
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ClientSocketConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocketDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);
begin
ClientSocket.Port:=159;
ClientSocket.Address:=Form1.AddressEdit.Text;
ClientSocket.Host:=Form1.AddressEdit.Text;
ClientSocket.Active:=True;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientSocket.Active:=False;
Form2.Hide;
Form1.Show;
end;

procedure TForm2.ClientSocketConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var nik: string;
begin
Memo1.Lines.Add('[('+DateToStr(Now)+'):('+TimeToStr(Now)+')] Подключились');
Socket.SendText(Form1.NikEdit.Text);
end;

procedure TForm2.ClientSocketDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('[('+DateToStr(Now)+'):('+TimeToStr(Now)+')] Отключились');
Socket.SendText(Form1.NikEdit.Text);
end;

procedure TForm2.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add(Edit1.Text);
ClientSocket.Socket.SendText(Edit1.Text);
Edit1.Clear;
end;

end.

сервер:
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm2 = class(TForm)
    ServerSocket: TServerSocket;
    Memo1: TMemo;
    Label1: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure ServerSocketClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormActivate(Sender: TObject);
begin
Label1.Caption:=Form1.IdIPWatch1.LocalIP;
ServerSocket.Port:=159;
ServerSocket.Active:=True;
Memo1.Lines.Add('Сервер создан...');
end;

procedure TForm2.ServerSocketClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var nik:string;
begin
nik:=Socket.ReceiveText;
Memo1.Lines.Add('(['+DateToStr(Now)+']:['+TimeToStr(Now)+']) Клиент,'+nik+'подключился');
end;

procedure TForm2.ServerSocketClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
var nik:string;
begin
nik:=Socket.ReceiveText;
Memo1.Lines.Add('(['+DateToStr(Now)+']:['+TimeToStr(Now)+']) Клиент, '+nik+' отключился');
end;

procedure TForm2.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
//Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ServerSocket.Active:=False;
Form2.Hide;
Form1.Show;
end;

end.

Выводится теперь так:прога.JPG
Ответить с цитированием