• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

急,我的TCP程序为什么会造成“由于系统缓冲区不足或队列已满,无法进行Socket连接”的错误?????????

yiyuan 2004-10-30 10:56:25
我的TCP程序在运行多次后好像会使得系统出现严重Socket错误,现象就是系统无法进行任何Socket连接,而且也无法上网了,打不开任何页面,只能重启机器才可恢复。

具体的错误是下面这个Windows Socket 10055错误:
WSAENOBUFS
10055
No buffer space available.
An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.

这句话中文大概是“由于系统缓冲区不足或队列已满,无法进行Socket连接”!!!


为什么我的程序会造成这个错误???如何才能解决这个问题???求教!!!!!
...全文
248 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
速马 2004-11-04
nod
回复
yiyuan 2004-11-04
现在看来,主要原因不是我的程序造成的,而是RPC的那些病毒造成的,netstat命令可以看到很多135端口的TCP连接,大部分状态是TIME_WAIT。

安装了SP2和天网防火墙,问题已经基本解决。
回复
hivak47 2004-10-31
没有释放网络资源,造成WinSocket池用完了,重启就可以解决。
回复
jkflyfox 2004-10-31
任何时候只要Windows Sockets实现检测到网络子系统失败,它就报告此错误,这是错误10055的产生原因。
你是不是在程序中不断的有开,关socket类似的操作,造成WinSocket池用完,当程序出错时,你可以在DOS窗口中运行netstat -na ,可能能发现很多状态是TIME_WAIT的,当你重启后,就好了。

好好调试下你的程序,不行的话来论坛上问那些高手。
回复
佣工7001 2004-10-30
应该没有别的办法
回复
yiyuan 2004-10-30
看来有道理。因为程序正在调试,而且我常常是直接启动的,而不是从IDE中,中断后可能没有释放资源。

不知道有没有什么办法可以手动清除缓冲区??难道要我每次都重启机器不成??
回复
paul8765 2004-10-30
没有释放网络资源吧,比如连接。
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-10-30 10:56
社区公告

让您成为最强悍的C#开发者