资源描述:
《初始化一个socket》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1初始化一个socket2建立一个socket列表用于管理socket3将初步连接的socket放入列表中4用select判断列表中未处理的socketWinAPI版本1.USHORTnPort=4567;//此服务器监听的端口号//创建监听套节字SOCKETsListen=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);sockaddr_insin;sin.sin_family=AF_INET;sin.sin_port=htons(nPort);sin.sin_a
2、ddr.S_un.S_addr=INADDR_ANY;//绑定套节字到本地机器if(::bind(sListen,(sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR){printf("Failedbind()");return-1;}//进入监听模式::listen(sListen,5);2.//select模型处理过程//1)初始化一个套节字集合fdSocket,添加监听套节字句柄到这个集合fd_setfdSocket;//所有可用套节字集合FD_ZERO(&f
3、dSocket);FD_SET(sListen,&fdSocket);otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeA
4、fterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand3.while(TRUE){//2)将fdSocket集合
5、的一个拷贝fdRead传递给select函数,//当有事件发生时,select函数移除fdRead集合中没有未决I/O操作的套节字句柄,然后返回。fd_setfdRead=fdSocket;intnRet=::select(0,&fdRead,NULL,NULL,NULL);if(nRet>0){//3)通过将原来fdSocket集合与select处理过的fdRead集合比较,//确定都有哪些套节字有未决I/O,并进一步处理这些I/O。for(inti=0;i<(int)fdSocket.fd_cou
6、nt;i++){if(FD_ISSET(fdSocket.fd_array[i],&fdRead)){if(fdSocket.fd_array[i]==sListen)//(1)监听套节字接收到新连接{if(fdSocket.fd_count7、ET(sNew,&fdSocket);printf("接收到连接(%s)",::inet_ntoa(addrRemote.sin_addr));}else{printf("Toomuchconnections!");continue;}}else{charszText[256];intnRecv=::recv(fdSocket.fd_array[i],szText,strlen(szText),0);if(nRecv>0)//(2)可读{szText[nRecv]=' ';otherstaf
8、foftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,SecretaryoftheSpecialCommitteeAfterthevictoryofthel