Tclientsocket令系统出错 我开了一个Tclientsocket向服务器连接,但因为网络问题,长一时间断开,Tclientsocket不断执行连接服务器动作,过了10个小时就出错了,说系统的缓冲不够或CONNXX连接数过多第一次我热行了一个FALSE的了为什么还会这样? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这得看一下你的连接源码才能下定论.一般不会出现这一问题.联接一般在SERVER和CLIENT两头控制或一头控制. function conn():string;begin if form1.ClientSocket1.Active then form1.ClientSocket1.Active := False; with form1.ClientSocket1 do begin Host := ipadd; port:=strtoint(portin); ClientType:=ctNonBlocking; // ClientType:=ctBlocking; Active := True; form1.suibutton2.Caption:='已 连 接'; form1.suibutton2.Enabled :=false; form1.suibutton3.Enabled :=true; end;end;procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);begintryif (errorcode=10053) thenbeginform1.Timer5.Enabled :=false;errorcode:=0;form1.clientsocket1.Active :=false;form1.memo1.Lines.Add('['+Datetimetostr(now)+']'+'----服务器停止服务');//form1.suibutton2.Caption :='连 接';//form1.suibutton2.Enabled :=true;//form1.suibutton3.Enabled :=false;form1.Timer2.Enabled :=true;end;exceptend;end;procedure TForm1.Timer2Timer(Sender: TObject);begintimer2.Enabled :=false; timer5.Enabled :=false; errorstr:='失败'; clientsocket1.Active:=false; clientsocket1.Close; conn();end; 不知道你用的是那一个控件,我用的是Delphi7里的INDY Client 里的IDTCPClient做客户端。现在在一单位中已经运行快五个月了,没问题(7*24)。如果你也是用这个控件的话,那么起动CLIENT好象是用Connect函数,在SOCKET中CLIENT中不存在数量过多的问题,一般在SERVER端存在线程开销但一般都是自动监控的一但客户关闭,线程自动取消。 为什么Pos会得到这样的结果? 急,怎么获取目录了下的所有文件 如何调用“浏览文件夹”窗口 INDY 9 中文帮助,你知道在哪里有吗? 谢谢。。。。。 关于APRO的安装 vcl&clx 高分请教 环境设置问题, ImgEdit在ActiveForm中的创建问题,COM接口问题 怎样Clear DBGrid里面的东西? 求一条SQL语句? 也谈delphi与mysql数据库的连接
一般不会出现这一问题.
联接一般在SERVER和CLIENT两头控制或一头控制.
begin
if form1.ClientSocket1.Active then form1.ClientSocket1.Active := False;
with form1.ClientSocket1 do
begin
Host := ipadd;
port:=strtoint(portin);
ClientType:=ctNonBlocking;
// ClientType:=ctBlocking;
Active := True;
form1.suibutton2.Caption:='已 连 接';
form1.suibutton2.Enabled :=false;
form1.suibutton3.Enabled :=true;
end;end;procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
try
if (errorcode=10053) then
begin
form1.Timer5.Enabled :=false;
errorcode:=0;
form1.clientsocket1.Active :=false;
form1.memo1.Lines.Add('['+Datetimetostr(now)+']'+'----服务器停止服务');
//form1.suibutton2.Caption :='连 接';
//form1.suibutton2.Enabled :=true;
//form1.suibutton3.Enabled :=false;
form1.Timer2.Enabled :=true;
end;except
end;end;procedure TForm1.Timer2Timer(Sender: TObject);
begin
timer2.Enabled :=false; timer5.Enabled :=false;
errorstr:='失败';
clientsocket1.Active:=false;
clientsocket1.Close;
conn();end;
我用的是Delphi7里的INDY Client 里的IDTCPClient做客户端。
现在在一单位中已经运行快五个月了,没问题(7*24)。
如果你也是用这个控件的话,那么起动CLIENT好象是用Connect函数,
在SOCKET中CLIENT中不存在数量过多的问题,一般在SERVER端存在线程开销但一般都是自动监控的
一但客户关闭,线程自动取消。