18,363
社区成员




//创建监听套接字
SOCKET socklisten;
if((socklisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
{
printf("socket failed!!!\n");
tes="socket failed!!!";
m_list.InsertItem(item++,tes);
WSACleanup();
return -1;
}
//设置服务器地址
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(9999);
servaddr.sin_addr.S_un.S_addr=inet_addr(IPADDR);
//绑定socket地址结构到监听套接字
if (bind(socklisten,(sockaddr *)&servaddr,sizeof(servaddr))!=0)
{
printf("binding failed!!!\n");
tes="binding failed!!!";
m_list.InsertItem(item++,tes);
closesocket(socklisten);
WSACleanup();
}
//在server上运行监听
if (listen(socklisten,20)!=0)
{
printf("listen failed !!!\n");
tes="listen failed !!!";
m_list.InsertItem(item++,tes);
closesocket(socklisten);
WSACleanup();
return -1;
}
int client_addr_length = sizeof(clientaddr);
memset(&clientaddr,0,client_addr_length);
SOCKET connect;
//循环等待
while (1)
{
if ((connect=accept(socklisten,(sockaddr *)&clientaddr,&client_addr_length))==INVALID_SOCKET)
{
printf("accept failed!!\n");
closesocket(connect);
WSACleanup();
return -1;
}
//创建新线程
DWORD ThreadID;
CreateThread(NULL,0,RequestThread,(LPVOID)connect,0,&ThreadID);
}
//循环等待
while (1)
{
if ((connect=accept(socklisten,(sockaddr *)&clientaddr,&client_addr_length))==INVALID_SOCKET)
{
printf("accept failed!!\n");
closesocket(connect);
WSACleanup();
return -1;
}
//创建新线程
DWORD ThreadID;
CreateThread(NULL,0,RequestThread,(LPVOID)connect,0,&ThreadID);
}