在我的程序里有一个tcp服务器端线程,普通情况下没有问题,但是某台机器上启动该线程时,在listen时,出现了10055错误,请问我该如何解决该问题,应该检查该台机器的那些参数?服务器端程序
启动服务器线程 CSockAddr sd(INADDR_ANY,*(USHORT*)pParam);
CBlockingSocket  socketoftcp;
CWinThread* pWinThread=NULL;
CBlockingSocket*  pSocket=NULL;

try {
socketoftcp.Create();
socketoftcp.Bind(sd);
socketoftcp.Listen(20);
if(hEventTcpSuccess != NULL) {
SetEvent(hEventTcpSuccess);//成功事件
}
           类CBlockingSocket的几个主要函数
CBlockingSocket::CBlockingSocket()
{ m_hSocket = NULL; }void CBlockingSocket::Create(int nType /* = SOCK_STREAM */)
{
ASSERT(m_hSocket == NULL);
m_hSocket = socket(AF_INET, nType, 0);
if(m_hSocket == INVALID_SOCKET) {
throw new CBlockingSocketException("Create");
}
}void CBlockingSocket::Bind(LPCSOCKADDR psa)
{
ASSERT(m_hSocket != NULL);
if(bind(m_hSocket, psa, sizeof(SOCKADDR)) == SOCKET_ERROR) {
throw new CBlockingSocketException("Bind");
}
}void CBlockingSocket::Listen(int nConnect)
{
ASSERT(m_hSocket != NULL);
if(listen(m_hSocket, nConnect) == SOCKET_ERROR) {
throw new CBlockingSocketException("Listen");
}
}

解决方案 »

  1.   

    10055 An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full. 
    10055错误内容是:一个socket操作不能执行,原因是系统缺少足够的缓冲空间,或者是队列已满。
      

  2.   

    http://www.jxcn.cn/so/cnstu/3912/3912812.htm
    http://board.verycd.com/t154117.html
    http://202.98.116.70:888/cgi-bin/newmov/bbs/topic.cgi?forum=24&topic=10246
    以上连接均是对10055的提问和网友的回答。看看有没有有效的
      

  3.   

    To 楼上从资源管理器中,看到该台机器上的cpu,内存,都很正常,请问还需要查看什么资源,用什么工具可以看到呢,这台机器不方便重装,很希望能找到解决的方法,请高手指点
      

  4.   

    to:happyparrot(快乐鹦鹉) 
    不要拿ErrorLookup中寻找得东西来唬小朋友!!
    什么缓存???那个队列你要给人说清楚啊
      

  5.   

    wow,怎么搞出火药味儿啦。to 楼主:有没有可能是权限的问题,用超级管理员权限试试,瞎说的哦,ddgfei(不懂规矩) 别打我哦。