服务器端线程处理函数(简单的只支持单client) :
UINT ServerFunc( LPVOID pParam );
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
CWinApp theApp;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
using
namespace
std;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
int
_tmain(
int
argc, TCHAR
*
argv[], TCHAR
*
envp[])
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int nRetCode = 0;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
cout<<"Hello, Welcome to socket"<<endl;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
AfxBeginThread(ServerFunc,0,0);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
while(_getch()!=27);
return nRetCode;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
UINT ServerFunc( LPVOID pParam )
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
cout<<"Here is Thread"<<endl;
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//WSAStartup
WSADATA wsaData;
int ret = WSAStartup(0x101,&wsaData);
if(ret!=0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return 1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//socket
SOCKET server = socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return 1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//bind
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons((u_short)20248);
server_addr.sin_addr.s_addr = INADDR_ANY;
ret = bind(server,(sockaddr*)&server_addr,sizeof(server_addr));
if(ret!=0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return 1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
//listen
ret = listen(server,10);
if(ret!=0)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
return 1;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
SOCKET client;
struct sockaddr_in client_addr;
int client_len = sizeof(client_addr);//这个参数一定要有初值,否则在调用accept时会出错
while(TRUE)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
char temp[512];
//accept
client = accept(server,(sockaddr*)&client_addr,&client_len);
sprintf(temp,"Connect from %s",inet_ntoa(client_addr.sin_addr));
cout<<temp<<endl;
sprintf(temp,"You IP Addr is %s",inet_ntoa(client_addr.sin_addr));
send(client,temp,strlen(temp),0);
closesocket(client);
}
closesocket(server);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
WSACleanup();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
return 0;
}