请教:
服务器端:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
private
iStatus : Integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Close; //首先关闭断开原先的连接
ClientSocket1.Address:='192.168.0.118'; //赋远程机的 IP 地址
ClientSocket1.Open; //建立 socket 连接
while iStatus = 0 do Application.ProcessMessages;
if iStatus = 1 then ClientSocket1.Socket.SendText('hghghj');
end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
iStatus := 1;
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
iStatus := -1;
ErrorCode := 0;
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ss:string;
begin
ss:=Socket.ReceiveText;
showmessage(ss);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
if ServerSocket1.Active = false then //打开 ServerSocket1
begin
ServerSocket1.Active:=true;
end;
end;end.客户端:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
Clientserver:boolean; //用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了
{ Private declarations }
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
if ServerSocket1.Active = false then //打开 ServerSocket1
begin
ServerSocket1.Active:=true;
end;
//**************** 用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了*******
Clientserver:=false;
//**************** 用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了*******
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ss:string;
begin
ss:=Socket.ReceiveText;
showmessage(ss);
end;procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Clientserver:=true;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Address:='192.168.0.118';
ClientSocket1.Open; while (Clientserver = false) do //连上了远程
begin
Application.ProcessMessages;
end; if (Clientserver = true) then
begin
ClientSocket1.Socket.SendText('csok'); //告诉客户端和服务器端连接起来了
end;
end;end.现在我单击 服务器端的 Button1 ,则客户端可以收到 服务器发过来的字符串
但是我单击 客户端的 Button1 , 则服务器端不能收到 服务器发过来的字符串各位大哥,这是什么原因?还有,while iStatus = 0 do Application.ProcessMessages;
这里可以改一下吗?改为 多少秒还是连接不上
则放弃,不然,别的就不能用 ClientSocket1 啊
(也就说,我可能用 ClientSocket1 向Address 为 '192.168.0.119'
的发送连接请求)我试这个程序
服务器端和客户端是在同一台计算机上
但是是使用不同的端口
(我想应该不是服务器端和客户端是在同一台计算机上的原因)谢谢!
服务器端:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
procedure Button1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
private
iStatus : Integer;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Close; //首先关闭断开原先的连接
ClientSocket1.Address:='192.168.0.118'; //赋远程机的 IP 地址
ClientSocket1.Open; //建立 socket 连接
while iStatus = 0 do Application.ProcessMessages;
if iStatus = 1 then ClientSocket1.Socket.SendText('hghghj');
end;procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
iStatus := 1;
end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
iStatus := -1;
ErrorCode := 0;
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ss:string;
begin
ss:=Socket.ReceiveText;
showmessage(ss);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
if ServerSocket1.Active = false then //打开 ServerSocket1
begin
ServerSocket1.Active:=true;
end;
end;end.客户端:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls;type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
ClientSocket1: TClientSocket;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
Clientserver:boolean; //用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了
{ Private declarations }
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
if ServerSocket1.Active = false then //打开 ServerSocket1
begin
ServerSocket1.Active:=true;
end;
//**************** 用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了*******
Clientserver:=false;
//**************** 用来判断远程的 ClientSocket1 是都向 本机发送了 连接请求,并且是否成功了*******
end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ss:string;
begin
ss:=Socket.ReceiveText;
showmessage(ss);
end;procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Clientserver:=true;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Address:='192.168.0.118';
ClientSocket1.Open; while (Clientserver = false) do //连上了远程
begin
Application.ProcessMessages;
end; if (Clientserver = true) then
begin
ClientSocket1.Socket.SendText('csok'); //告诉客户端和服务器端连接起来了
end;
end;end.现在我单击 服务器端的 Button1 ,则客户端可以收到 服务器发过来的字符串
但是我单击 客户端的 Button1 , 则服务器端不能收到 服务器发过来的字符串各位大哥,这是什么原因?还有,while iStatus = 0 do Application.ProcessMessages;
这里可以改一下吗?改为 多少秒还是连接不上
则放弃,不然,别的就不能用 ClientSocket1 啊
(也就说,我可能用 ClientSocket1 向Address 为 '192.168.0.119'
的发送连接请求)我试这个程序
服务器端和客户端是在同一台计算机上
但是是使用不同的端口
(我想应该不是服务器端和客户端是在同一台计算机上的原因)谢谢!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货