进击的小飞 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 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建