Tclientsocket令系统出错

小东东1334 2004-08-12 12:30:34
我开了一个Tclientsocket向服务器连接,但因为网络问题,长一时间断开,Tclientsocket不断执行连接服务器动作,过了10个小时就出错了,说系统的缓冲不够或CONNXX连接数过多第一次我热行了一个FALSE的了为什么还会这样?
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxcsoftware 2004-08-13
  • 打赏
  • 举报
回复
不知道你用的是那一个控件,
我用的是Delphi7里的INDY Client 里的IDTCPClient做客户端。
现在在一单位中已经运行快五个月了,没问题(7*24)。
如果你也是用这个控件的话,那么起动CLIENT好象是用Connect函数,
在SOCKET中CLIENT中不存在数量过多的问题,一般在SERVER端存在线程开销但一般都是自动监控的
一但客户关闭,线程自动取消。
xxcsoftware 2004-08-12
  • 打赏
  • 举报
回复
这得看一下你的连接源码才能下定论.
一般不会出现这一问题.
联接一般在SERVER和CLIENT两头控制或一头控制.
小东东1334 2004-08-12
  • 打赏
  • 举报
回复
代码在这里了问怎什么原因?
小东东1334 2004-08-12
  • 打赏
  • 举报
回复
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);
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;
capoatguitar 2004-08-12
  • 打赏
  • 举报
回复
看不明白你的题

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧