library K2; uses
SysUtils,
ScktComp,
Dialogs,
Classes; typeTClient = class(TClientSocket)
public procedure readdata(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpconnected(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpdisconnected(Sender: TObject; Socket: TCustomWinSocket);
procedure tcperror(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
end;
var
ClientSocket1 : TClient;
tcpclent: TClient;
{$R *.res}
begin
ClientSocket1 := TClient.create(nil);
ClientSocket1.ClientType := ctNonBlocking;
ClientSocket1.Address:='127.0.0.1';
ClientSocket1.port:=2058;
ClientSocket1.onread:= tcpclent.readdata; ClientSocket1.OnConnect:=tcpclent.tcpconnected;
ClientSocket1.ondisconnect:=tcpclent.tcpdisconnected;
ClientSocket1.onerror:=tcpclent.tcperror; //ClientSocket1.Active:= false;
ClientSocket1.Active:= true;
// if ClientSocket1.Active then
// else
// begin
// showmessage('无法连接服务器!');
// ClientSocket1.close();
// ClientSocket1.free;
// end;end.
SysUtils,
ScktComp,
Dialogs,
Classes; typeTClient = class(TClientSocket)
public procedure readdata(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpconnected(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpdisconnected(Sender: TObject; Socket: TCustomWinSocket);
procedure tcperror(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
end;
var
ClientSocket1 : TClient;
tcpclent: TClient;
{$R *.res}
begin
ClientSocket1 := TClient.create(nil);
ClientSocket1.ClientType := ctNonBlocking;
ClientSocket1.Address:='127.0.0.1';
ClientSocket1.port:=2058;
ClientSocket1.onread:= tcpclent.readdata; ClientSocket1.OnConnect:=tcpclent.tcpconnected;
ClientSocket1.ondisconnect:=tcpclent.tcpdisconnected;
ClientSocket1.onerror:=tcpclent.tcperror; //ClientSocket1.Active:= false;
ClientSocket1.Active:= true;
// if ClientSocket1.Active then
// else
// begin
// showmessage('无法连接服务器!');
// ClientSocket1.close();
// ClientSocket1.free;
// end;end.
[Error] Project2.dpr(19): Unsatisfied forward or external declaration: 'TClient.tcpconnected'
[Error] Project2.dpr(20): Unsatisfied forward or external declaration: 'TClient.tcpdisconnected'
[Error] Project2.dpr(21): Unsatisfied forward or external declaration: 'TClient.tcperror'
望大虾指点
unit Client;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ToolWin, ComCtrls, ScktComp, ExtCtrls;type
TClientForm = class(TForm)
ClientSocket: TClientSocket;
Btn_Connect: TButton;
StatusBar: TStatusBar;
ToolBar1: TToolBar;
Btn_Send: TButton;
Btn_DisConnect: TButton;
Bevel1: TBevel;
Bevel2: TBevel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Label4: TLabel;
Edit3: TEdit;
Edit4: TEdit;
Label5: TLabel;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Label8: TLabel;
Memo1: TMemo;
Edt_Send: TEdit;
Label9: TLabel;
procedure Btn_ConnectClick(Sender: TObject);
procedure Btn_DisConnectClick(Sender: TObject);
procedure Btn_SendClick(Sender: TObject);
procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketConnecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
ClientForm: TClientForm;implementation{$R *.dfm}//连接
procedure TClientForm.Btn_ConnectClick(Sender: TObject);
begin
ClientSocket.Host := Edt_Host.Text;
ClientSocket.Port := StrToInt(Edt_Port.Text);
ClientSocket.Open;
end;//断开
procedure TClientForm.Btn_DisConnectClick(Sender: TObject);
begin
ClientSocket.Close;
end;//发送
procedure TClientForm.Btn_SendClick(Sender: TObject);
begin
ClientSocket.Socket.SendText(Edt_Send.Text);
end;//读取到报文时
procedure TClientForm.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;//连接成功时
procedure TClientForm.ClientSocketConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Btn_Send.Enabled := True;
Btn_Disconnect.Enabled :=True;
StatusBar.Panels[0].Text := '已经连接到 '+ Socket.RemoteHost;
end;//连接时
procedure TClientForm.ClientSocketConnecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
StatusBar.Panels[0].Text := '正在连接到服务器... ';
end;//断开时
procedure TClientForm.ClientSocketDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Btn_Send.Enabled := False;
Btn_Disconnect.Enabled := False;
StatusBar.Panels[0].Text := '已经断开与 '+ Socket.RemoteHost +' 的连接';
end;procedure TClientForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientSocket.Close;
end;//发生错误
procedure TClientForm.ClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
StatusBar.Panels[0].Text := '与服务器端的连接发生错误';
ErrorCode := 0;
end;end.