winsock 服务器代码(不建议win服务器listen防火墙会禁止外部访问的)

 1 int SessionBase::ServerSock()
 2 {
 3    /*
 4     *    WSADATA是个结构体,在WSAStartup中被填充.
 5     *    WSAStartup为调用WinSock准备初始化的工作.
 6     *    第一个参数指定编程使用的WinSock规范的最高版本号.
 7     *    WSAStartup成功返回0.失败则程序退出.
 8     */
 9     WSADATA wsaData; 
10     if((WSAStartup(0x101,&wsaData)) != 0)
11     {
12         return 0;
13     }
14   
       SOCKET clientSock;
       SOCKET serverSock;
15     sockaddr_in local;
16     sockaddr_in from;
17     int fromlen=sizeof(from);
18 
19     local.sin_family      = AF_INET;
20     local.sin_addr.s_addr = inet_addr( m_strPorxyAddr.c_str() );
21     local.sin_port        = htons( m_ProxyPort );
22 
23     if((socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
24     {
25         return 0;
26     }
27 
28     if(bind(serverSock,(sockaddr*)&local,sizeof(local))!=0)
29     {
30         return 0;
31     }
32 
33     if(listen(serverSock,10)!=0)            /*    backlog表示最大的连接数 */
34     {
35         return 0;
36     }
37 
38     while(TRUE)
39     {
40         char temp[2048];
41 
42         clientSock=accept(serverSock,(struct sockaddr*)&from,&fromlen);
43         logger.writeLog("SessionBase  Server socket accept client IP:[%s],port:[%d]",inet_ntoa(from.sin_addr),ntohs(from.sin_port));
44 
45         send(clientSock,temp,strlen(temp),0);
46 
47         closesocket(clientSock);
48     }
49     closesocket(serverSock);
50 
51     WSACleanup();        /* 确保进程不再使用WS2_32.DLL */
52     return 0;
53 }

 

posted @ 2018-08-23 17:45  老鼠扛刀,满街找猫  阅读(299)  评论(0编辑  收藏  举报