进击的小飞 2015-06-08 02:45 采纳率: 0%
浏览 2245

求赐教在使用winsock2.h时listen返回-1,GetLastError返回6怎么解决

代码是这样的:

 void server::onOpenNetwork(Ref * sender)
{
    int lastError;
    //创建套接字
    WORD myVersionRequest;
    WSADATA wsaData;
    myVersionRequest = MAKEWORD(1, 1);
    int err;
    err = WSAStartup(myVersionRequest, &wsaData);
    if (!err){
        log("已打开套接字\n");
    }
    else{
        log("ERROR:嵌套字未打开!");
        return;
    }
    lastError = WSAGetLastError();
    //进一步绑定套接字
    SOCKET serSocket = socket(AF_INET, SOCK_STREAM, 0);//创建了可识别套接字

    //需要绑定的参数
    SOCKADDR_IN addr;
    addr.sin_family = AF_INET;
    addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//ip地址
    addr.sin_port = htons(21567);//绑定端口

    /*int bindErr=*/bind(serSocket, (SOCKADDR*)&addr, sizeof(SOCKADDR));//绑定完成
    lastError = WSAGetLastError();

    int listenErr=listen(serSocket, 10);//其中第二个参数代表能够接收的最多的连接数

    if (listenErr < 0)
    {
        log("监听失败");
        lastError=WSAGetLastError();
    }

    //////////////////////////////////////////////////////////////////////////
    //开始进行监听
    //////////////////////////////////////////////////////////////////////////
    SOCKADDR_IN clientsocket;
    int len = sizeof(SOCKADDR);


    while (1)
    {
        SOCKET serConn = accept(serSocket, (SOCKADDR*)&clientsocket, &len);//如果这里不是accept而是conection的话。。就会不断的监听


        //创建线程来处理这个链接
        ClientThread clientDeal = ClientThread(serConn);

    }


    WSACleanup();//释放资源的操作
}

说明一下就是,我这里是在cocos2dx里面写的一段代码。作用就是当按下按钮之后调用这个函数打开网络,作为服务器。前面这段代码在win32控制台是可以得,但是拿到这里就不行了,不知道跟这个是不是有关系,求赐教^_^

  • 写回答

4条回答

报告相同问题?

悬赏问题

  • ¥15 孟德尔随机化结果不一致
  • ¥20 求用stm32f103c6t6在lcd1206上显示Door is open和password:
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法