interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ComCtrls,scktcomp;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
server:Tserversocket;
client:Tclientsocket;
procedure Serverclientconnect(sender:Tobject;socket:Tcustomwinsocket);
procedure ClientRead(sender:Tobject;socket:Tcustomwinsocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.Serverclientconnect(sender:Tobject;socket:Tcustomwinsocket);
begin
showmessage('101');
socket.SendText('hello');
end;procedure Tform1.ClientRead(sender:Tobject;socket:Tcustomwinsocket);
begin
showmessage(socket.ReceiveText);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
server.Active:=true;
showmessage('开');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if edit1.Text='' then exit;
client.address:=edit1.text;
client.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
server:=Tserversocket.Create(self);
client:=Tclientsocket.Create(self);
with server do
begin
serverType:=stNonblocking;
port:=6069;
end;
with client do
begin
clienttype:=ctNonblocking;
port:=6069;
end;
end;end.用同一个程序进行测试,无论我怎么修改socket的servertype,clienttype都不能接收数据,在另一个程序中甚至连建立连接的showmessage都没出现。
我尝试过用serverGetThread进行连接,也不行。连重构TserverClientThread的线程方法都不停报错报warning。
上面这个例子是我抄书的,也不通过。
谁能解释下。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,ComCtrls,scktcomp;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
server:Tserversocket;
client:Tclientsocket;
procedure Serverclientconnect(sender:Tobject;socket:Tcustomwinsocket);
procedure ClientRead(sender:Tobject;socket:Tcustomwinsocket);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Tform1.Serverclientconnect(sender:Tobject;socket:Tcustomwinsocket);
begin
showmessage('101');
socket.SendText('hello');
end;procedure Tform1.ClientRead(sender:Tobject;socket:Tcustomwinsocket);
begin
showmessage(socket.ReceiveText);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
server.Active:=true;
showmessage('开');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
if edit1.Text='' then exit;
client.address:=edit1.text;
client.Active:=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
server:=Tserversocket.Create(self);
client:=Tclientsocket.Create(self);
with server do
begin
serverType:=stNonblocking;
port:=6069;
end;
with client do
begin
clienttype:=ctNonblocking;
port:=6069;
end;
end;end.用同一个程序进行测试,无论我怎么修改socket的servertype,clienttype都不能接收数据,在另一个程序中甚至连建立连接的showmessage都没出现。
我尝试过用serverGetThread进行连接,也不行。连重构TserverClientThread的线程方法都不停报错报warning。
上面这个例子是我抄书的,也不通过。
谁能解释下。
我用Tserverclientthread类时,重构create时说不能重构静态函数.clientexecute这里说基类没有相关的可继承的东西(我把他放在protected里).
我没用Tserverclientthread本身,我自己写的派生子类,用于处理一些额外的问题.我自己添加了私有几个变量,竟显示显示never used.但我已经在接口区uses里添加了引用了(连Tform1都报错,我早uses了unit1了).
地址输入必须为“127.0.0.1“本地地址
正常的应该是服务器中用server,客户端用client吧.
你动态建立连接后没有触发事件。
procedure TForm1.FormCreate(Sender: TObject);
begin
server:=Tserversocket.Create(self);
client:=Tclientsocket.Create(self);
with server do
begin
serverType:=stNonblocking;
port:=6069;
onClientConnect := serverClientConnect;
end;
with client do
begin
clienttype:=ctNonblocking;
port:=6069;
OnClientRead := Clientread;
end;
end;