初始化一个socket

初始化一个socket

ID:14200785

大小:57.00 KB

页数:5页

时间:2018-07-26

初始化一个socket_第1页
初始化一个socket_第2页
初始化一个socket_第3页
初始化一个socket_第4页
初始化一个socket_第5页
资源描述:

《初始化一个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_ad

2、dr.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(&fdS

3、ocket);FD_SET(sListen,&fdSocket);3.while(TRUE){//2)将fdSocket集合的一个拷贝fdRead传递给select函数,//当有事件发生时,select函数移除fdRead集合中没有未决I/O操作的套节字句柄,然后返回。fd_setfdRead=fdSocket;intnRet=::select(0,&fdRead,NULL,NULL,NULL);if(nRet>0){//3)通过将原来fdSocket集合与select处理过的fdRead集合比较,//

4、确定都有哪些套节字有未决I/O,并进一步处理这些I/O。for(inti=0;i<(int)fdSocket.fd_count;i++){if(FD_ISSET(fdSocket.fd_array[i],&fdRead)){if(fdSocket.fd_array[i]==sListen)//(1)监听套节字接收到新连接{if(fdSocket.fd_count

5、sNew=::accept(sListen,(SOCKADDR*)&addrRemote,&nAddrLen);FD_SET(sNew,&fdSocket);printf("接收到连接(%s)",::inet_ntoa(addrRemote.sin_addr));}else{printf("Toomuchconnections!");continue;}}else{charszText[256];intnRecv=::recv(fdSocket.fd_array[i],szText,strlen

6、(szText),0);if(nRecv>0)//(2)可读{szText[nRecv]='';printf("接收到数据:%s",szText);}else//(3)连接关闭、重启或者中断{::closesocket(fdSocket.fd_array[i]);printf("关闭");FD_CLR(fdSocket.fd_array[i],&fdSocket);}}}}}else{printf("Failedselect()");break;}}二.自己写了一个c#版本的socket

7、的select方法使用classThreadtcpserver{privateSocketserver;publicThreadtcpserver(){IPAddresslocal=IPAddress.Parse("127.0.0.1");IPEndPointiep=newIPEndPoint(local,4567);server=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//将套接字与本地终结点绑定

8、server.Bind(iep);//在本地13000端口号上进行监听server.Listen(20);Console.WriteLine("等待客户机进行连接......");ListsocketList=newList();socketList.Add(server);while(true){Listtemp=socketList.ToList();Socket.Select(temp,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。