WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{ WSACleanup( );
return;
} char hostname[256];
gethostname(hostname,sizeof(hostname)); //这一代码是为
HOSTENT*hos=gethostbyname(hostname); //了实现自动获取安
CString CS=inet_ntoa(*(struct in_addr*)hos->h_addr_list[0]);// 装程序的主机代码
SOCKET socksrv = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in saServer;
//saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//宏INADDR_ANY定义的是0
saServer.sin_addr.S_un.S_addr = inet_addr(CS);//宏INADDR_ANY定义的是0
saServer.sin_family = AF_INET;
saServer.sin_port = htons(6000);
bind(socksrv, (SOCKADDR*)&saServer, sizeof(SOCKADDR));
listen(socksrv, 5);
我现在已经到了监听这一步,然后我需要accept,但是我有多个终端,如果多个终端都发出连接请求,我想采用多线程方式来处理,一个线程来处理一个Accept后的新线程,现在的问题:
在什么情况下,启动新线程?
在新线程里accept,生产一个新的套接字,还是在主线程里accept后,启动新线程.不管采用什么方式,能否给一段多终端的代码,参考一下.还有就是在accept时,端口号是自动分配的么?是不是和监听端口没有任何联系?
谢谢
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 )
{ WSACleanup( );
return;
} char hostname[256];
gethostname(hostname,sizeof(hostname)); //这一代码是为
HOSTENT*hos=gethostbyname(hostname); //了实现自动获取安
CString CS=inet_ntoa(*(struct in_addr*)hos->h_addr_list[0]);// 装程序的主机代码
SOCKET socksrv = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in saServer;
//saServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//宏INADDR_ANY定义的是0
saServer.sin_addr.S_un.S_addr = inet_addr(CS);//宏INADDR_ANY定义的是0
saServer.sin_family = AF_INET;
saServer.sin_port = htons(6000);
bind(socksrv, (SOCKADDR*)&saServer, sizeof(SOCKADDR));
listen(socksrv, 5);
我现在已经到了监听这一步,然后我需要accept,但是我有多个终端,如果多个终端都发出连接请求,我想采用多线程方式来处理,一个线程来处理一个Accept后的新线程,现在的问题:
在什么情况下,启动新线程?
在新线程里accept,生产一个新的套接字,还是在主线程里accept后,启动新线程.不管采用什么方式,能否给一段多终端的代码,参考一下.还有就是在accept时,端口号是自动分配的么?是不是和监听端口没有任何联系?
谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货