日期:2014-05-19  浏览次数:21353 次

关于Socket通讯报错“由于系统缓冲区或队列已满,不能执行套接字上的操作”,如何解决
用断点跟踪发现问题均在发送线程与回调函数中。

我现在做法为,两个线程。采用一个client公共对象。每隔200秒收发一次。在发送函数中
try
{
do
{
  socket.beginsend();   //在这里总报这个错误
}
while()
}

privete   void   sendcallback()   //回调函数
{
xxxx
}

如何解决,哪里出了问题?注:我的连接是常连接。

------解决方案--------------------
接收数据缓冲区
定义大一些
------解决方案--------------------
创建的套接字太多??没有释放??
------解决方案--------------------
由于系统缓冲区或队列已满,不能执行套接字上的操作。
//报这个错误就说明了SOCKET的缓冲区满了,也就是说你发送的字节数已经暂满了SOCKET缓冲区,而数据还没有被发出去,SOCKET缓冲区已经没有多的空间来发送或者接受数据了。
另外就是你程序里定义的缓冲大小跟SOCKET的缓冲大小无关。因为SOCKET本身是有缓冲区的。