www.pudn.com > IPXControl.rar > ServerUnit.pas


unit ServerUnit; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, ComCtrls, IPXCtl, StdCtrls, ScktComp; 
 
type 
  TForm1 = class(TForm) 
    StatusBar1: TStatusBar; 
    Button1: TButton; 
    Button2: TButton; 
    Edit1: TEdit; 
    Edit2: TEdit; 
    IPXServerSocket1: TIPXServerSocket; 
    procedure IPXServerSocket1Listen(Sender: TObject; Socket: Cardinal); 
    procedure Button1Click(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
    procedure IPXServerSocket1ClientConnected(Sender: TObject; 
      Socket: Cardinal); 
    procedure IPXServerSocket1Read(Sender: TObject; Socket: Cardinal); 
    procedure IPXServerSocket1ClientDisconnect(Sender: TObject; 
      Socket: Cardinal); 
    procedure IPXServerSocket1Error(Sender: TObject; ErrMsg: String); 
    procedure Button2Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.dfm} 
 
procedure TForm1.IPXServerSocket1Listen(Sender: TObject; Socket: Cardinal); 
begin 
     Statusbar1.Panels[0].Text := '正在侦听...'; 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
     IPXServerSocket1.Open; 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
     IPXServerSocket1.Close; 
end; 
 
procedure TForm1.IPXServerSocket1ClientConnected(Sender: TObject; 
  Socket: Cardinal); 
begin 
     Statusbar1.Panels[0].Text := IntToStr(IPXServerSocket1.ActiveClientCount)+'个用户'; 
end; 
 
procedure TForm1.IPXServerSocket1Read(Sender: TObject; Socket: Cardinal); 
var 
     Buf : array[0..4095] of char; 
begin 
       ZeroMemory(@Buf, 4096); 
       IPXServerSocket1.RecvBuf(Socket,Buf, sizeof(Buf)); 
       Edit1.Text := Buf; 
end; 
 
procedure TForm1.IPXServerSocket1ClientDisconnect(Sender: TObject; 
  Socket: Cardinal); 
begin 
     Statusbar1.Panels[0].Text := IntToStr(IPXServerSocket1.ActiveClientCount)+'个用户'; 
end; 
 
procedure TForm1.IPXServerSocket1Error(Sender: TObject; ErrMsg: String); 
begin 
     Statusbar1.Panels[0].Text := ErrMsg; 
end; 
 
procedure TForm1.Button2Click(Sender: TObject); 
var 
     i : Integer; 
     str : string; 
begin 
    str := Edit2.Text; 
    for i := 0 to IPXServerSocket1.ActiveClientCount - 1 do 
       IPXServerSocket1.SendBuf(IPXServerSocket1.Connections[i],Pointer(str)^,Length(str)); 
    Edit2.Text := '';    
end; 
 
end.