帮 socket非阻塞模式程序无故死掉的问题

sxzqlzx 2004-12-30 02:10:05
用TServerSocket和TClientSocket用非阻塞模式写的通讯软件,几个客户端上线是没有问题,可是客户端上了十几个以后,服务器端和客户端都会莫名其妙的死掉?
在onerror的处理中怎样才合适。
求助各位!
...全文
210 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfdream 2005-01-06
  • 打赏
  • 举报
回复
帮 yuanreid(闲云孤鹤)补充一句, TWinSocketStream只能用于阻塞模式SOCKET..
sxzqlzx 2005-01-05
  • 打赏
  • 举报
回复
我的服务器端的组件TWinSocketStream是直接加入的

没有重载它的构造函数,后来在客户端退出是sendtext("close")

服务器端在收到信息后CLose()客户端的socket,稍微好些,但是解决不了客户端的异常退出问题
yuanreid 2005-01-05
  • 打赏
  • 举报
回复
TWinSocketStream类在创建时,可以指定超时时间。这个时间对于Send有效

__fastcall TWinSocketStream(TCustomWinSocket* ASocket, int TimeOut);

The TimeOut property (the number of milliseconds before a read or write operation aborts) is initialized to the value of the TimeOut parameter.

sxzqlzx 2005-01-04
  • 打赏
  • 举报
回复
几天了没上网

【闲云孤鹤】兄说的有道理,我用的都是sendtext,请问如何加入超时限制


谢谢
jb9802 2005-01-01
  • 打赏
  • 举报
回复
在onerror 中把 错误的状态设成0就可以了。
halfdream 2005-01-01
  • 打赏
  • 举报
回复
在ERROR事件里面Socket.Close;
yuanreid 2004-12-31
  • 打赏
  • 举报
回复
服务器端在客户端连接突然中断时(网络问题或系统问题)发送数据会出现Timeout,在这个TimeOut时间内会引发后面的Socket操作延迟并阻塞,严重的会引发后面多个包发送出现问题。因此使用TServerSocket时,需要特别留意超时的控制,特别是发送超时,尽量使用TWinSocketStream类提前处理发送数据的超时,并及时关闭问题端口。
sxzqlzx 2004-12-31
  • 打赏
  • 举报
回复
请大家帮助解决在客户端和服务器端异常退出时的处理

或其他原因(如题)
sxzqlzx 2004-12-31
  • 打赏
  • 举报
回复
有这方面的例程的朋友,发一个

sxzqlzx@163.com
sxzqlzx 2004-12-30
  • 打赏
  • 举报
回复
谢谢,具体点
mmking33 2004-12-30
  • 打赏
  • 举报
回复
try
{

}
catch(...)
{

}就可以
sxzqlzx 2004-12-30
  • 打赏
  • 举报
回复
急,发现可能是ClientSocket 在关闭或异常退出时的错误,请问服务器端如何处理
sxzqlzx 2004-12-30
  • 打赏
  • 举报
回复
同志们加把劲
sxzqlzx 2004-12-30
  • 打赏
  • 举报
回复
服务器端在主线程里,客户端的发送在主线程,接收是单独的线程
空中猎手 2004-12-30
  • 打赏
  • 举报
回复
消息的处理是不是全在主线程里?

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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