请教使用ClientSocket遇到的问题

panxiang 2006-05-08 04:35:00
CB5中使用ClientSocket控件无法连接服务器时,有时出现:
windows Socket error:由于系统缓冲区间不足或列队已满,不能执行套接字上的操作。(1005),on API'connect'

而ClientSocket1Error没有捕获此错误。请教是什么原因引起此问题,应该如何解决。
...全文
293 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
soloxiao 2006-05-10
  • 打赏
  • 举报
回复
那是因为有过多的try connect,disconnect, 我试过用阻塞式就可以了
huaqglxy2004 2006-05-09
  • 打赏
  • 举报
回复
估计是服务端的问题,你用一个ServerSocket去测试一下
awen177 2006-05-08
  • 打赏
  • 举报
回复
我最近也遇到类似的问题,你尝试一下将ClientSocket1->Close(); 改为Socket->Close();试一下?
pp616 2006-05-08
  • 打赏
  • 举报
回复
是不是Client一开始不会出现这种问题。程序跑的时间长了这问题才出来??
我觉得是socket没有释放掉
铖邑 2006-05-08
  • 打赏
  • 举报
回复
这个可真麻烦。楼主在哪个地方啊?
panxiang 2006-05-08
  • 打赏
  • 举报
回复
可以确认不是服务器的问题.因为服务器程序关闭后才会出现此问题.
客户端每隔一段时间有自动连接服务器,正常情况下,无法连接时会发生ClientSocket1Error,我在此事件中ClientSocket1->Close(); 在大部分的电脑中都不会发生上面的错误.在发生问题的电脑上也不是一直会出现,只是很偶尔地出现,我现在无法让他重现.
根据错误的情况分析,应该是连接发生错误时,没有捕获错误造成的,为什么
windows Socket error:由于系统缓冲区间不足或列队已满,不能执行套接字上的操作。(1005),on API'connect'
这个错误不能捕获呢,是什么原因造成的?望高手们赐教
铖邑 2006-05-08
  • 打赏
  • 举报
回复
可是楼主说的好象不是服务器端的问题
pp616 2006-05-08
  • 打赏
  • 举报
回复
楼主建了多少个连接???该关的socket要关了。
用netstat -a 看一下吧。估计是很多连接没有关闭。
netsys2 2006-05-08
  • 打赏
  • 举报
回复
这问题我遇到过,这是SERVER端的原因。

在C/S结构中,由于通信故障,CLEINT的拆线信息不能到达SERVER,而SERVER端能够接收连接的缓冲是有限的,太多的僵尸线程使得SERVER不能接收CLEINT的连接请求。

解决方法:
SERVER定时检查自己的连接情况,如果在一定的时间内该连接没有数据,认为是僵尸线程,直接Close掉这个SOCKET。
铖邑 2006-05-08
  • 打赏
  • 举报
回复
没碰到过这个问题。不知道什么原因。你换成BCB6也一样吗?

1,317

社区成员

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

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