关于Socket通讯报错“由于系统缓冲区或队列已满,不能执行套接字上的操作”,如何解决
用断点跟踪发现问题均在发送线程与回调函数中。
我现在做法为,两个线程。采用一个client公共对象。每隔200秒收发一次。在发送函数中
try
{
do
{
socket.beginsend(); //在这里总报这个错误
}
while()
}
privete void sendcallback() //回调函数
{
xxxx
}
如何解决,哪里出了问题?注:我的连接是常连接。
------解决方案--------------------接收数据缓冲区
定义大一些
------解决方案--------------------创建的套接字太多??没有释放??
------解决方案--------------------由于系统缓冲区或队列已满,不能执行套接字上的操作。
//报这个错误就说明了SOCKET的缓冲区满了,也就是说你发送的字节数已经暂满了SOCKET缓冲区,而数据还没有被发出去,SOCKET缓冲区已经没有多的空间来发送或者接受数据了。
另外就是你程序里定义的缓冲大小跟SOCKET的缓冲大小无关。因为SOCKET本身是有缓冲区的。