代码是这样的:
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控制台是可以得,但是拿到这里就不行了,不知道跟这个是不是有关系,求赐教^_^