ClientSocket的一个问题~(100分)

  • 主题发起人 主题发起人 rogs3210
  • 开始时间 开始时间
R

rogs3210

Unregistered / Unconfirmed
GUEST, unregistred user!
begin
try
Edit1.Text:='10.4.10.';

with ClientSocket1do
begin

if Active then

Active := False;//在连接之前首先关闭
Host:= Edit1.Text+inttostr(luo);
//指定IP地址或主机名
Active := True;
end;
ClientSocket1.Active:=false;
inc(luo);
edit1.Text:=Edit1.Text+inttostr(luo);
if edit1.Text=tcpserver1.LookupHostAddr(ComputerName) then
inc(luo) ;
if luo=256 then
luo:=0;
except
end;
//*)
end;

我是用个TIMER控件不断的检查是否连接到服务端,就出现了这样的问题~<<‘WINDOWS SOCKET ERROR:由于系统缓冲区空间不足或队列一满,不能执行套接字上的操作>>
应该怎么解决呢,~谢谢拉~
 
查看一下服务器是不是不 连接数开的不够大?
 
如何检测是否连接的?
 
QSmile, 时间:2006-8-23 11:08:43, ID:3542655
查看一下服务器是不是不 连接数开的不够大?
不开服务器,也出现这样的问题哦~
 
来自:kgm, 时间:2006-8-23 11:36:05, ID:3542710
如何检测是否连接的?
连接到了,就在connect事件上close那个client端~
 
不能关闭后立即就连结,TCP有个关闭“静等”,时间有的长达几分钟,这个时间段内socket并不被释放。socket属于内核句柄,创建每个句柄都要申请对应一个比较大的内核对象结构体,而且是占用的非分页内存,所以你过于频繁的创建可能会出现那个问题。
 
可以解决的,但是又出现另一个问题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1100777
 
后退
顶部