一个关于ClientSocket连接的问题。 ( 积分: 50 )

  • 主题发起人 主题发起人 bergkampzhu
  • 开始时间 开始时间
B

bergkampzhu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一个ClientSocket(CS)与服务器连接,ClientType为ctNonBlocking:
CS.Address:= Trim(edtIP.Text);
CS.Active:=true;
运行到此处时服务器端已检测到有连接(ServerSocket的OnClientConnect事件触发)。但此时的CS.Socket.Connected却为False,CS.Active也为False,执行
CS.Socket.SendText('hh')无果。不知为何,请赐教。
 
即然服务端已收到连接信息就应该没问题,记得上这上面有许多这样的例子,你找一个看看.这里也有一个简单例子:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;//客户端组件
ServerSocket1: TServerSocket;//服务端组件
procedure FormCreate(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function Get_ComputerName: String;
var
iSize: LongWord;
ComputerName: PChar;
begin
iSize := MAX_COMPUTERNAME_LENGTH + 1;
GetMem(ComputerName, iSize);
GetComputerName(ComputerName, iSize);
Result := ComputerName;
FreeMem(ComputerName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
with ServerSocket1 do
begin
Port := 5643;
Open; //或者Active := True;
end;
with ClientSocket1 do
begin
Port := 5643;
Host := Get_ComputerName;
Open; //或者Active := True;
end;
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;//收到连接请求后的回应
Socket: TCustomWinSocket);
begin
Socket.SendText('ClientSocket1 你好!')
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
ShowMessage(Socket.ReceiveText);//收到服务端回应后的提示!
end;

end.
 
非常奇怪的事情。我用ClientSocket发送文本以后,在ServerSocket的OnClientRead事件里用memo1.Lines.Add(Socket.ReceiveText)就可以正常显示收到的报文,可是showmessage(Socket.ReceiveText)就什么都没有,不知怎么回事。
 
active:=true;
连接后要岩石几秒!
 
还有一个问题,服务器端怎么判断有多少连接?我想向所有客户端发送信息该怎么办?我知道有个Socket.Connection数组可以利用但是怎么知道一共用多少个连接呢?
 
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
http://www.51zhan.com 最好的网址站
 
多人接受答案了。
 
后退
顶部