socket通信接口的模式选择

socket通信接口的模式选择

ID:17000986

大小:35.00 KB

页数:5页

时间:2018-08-26

socket通信接口的模式选择_第1页
socket通信接口的模式选择_第2页
socket通信接口的模式选择_第3页
socket通信接口的模式选择_第4页
socket通信接口的模式选择_第5页
资源描述:

《socket通信接口的模式选择》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Socket通信接口的模式选择选择(select)模型是Winsock中最常见的I/O模型。核心便是利用select函数,实现对I/O的管理!利用select函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次I/O调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模式中时,产生WSAEWOULDBLOCK错误。select函数原型:int  select(  int  nfds,  //传入参数,忽略  fd_setFAR*  readfds,    

2、//检查可读性  fd_setFAR*  writefds,  //检查可写性  fd_setFAR*exceptfds,    //例外数据  const  struct  timevalFAR*  timeout//本次select调用最长的等待时间);函数返回值,select()函数调用后,返回处于就绪状态并且已经包含在fd_set结构中的套接口描述符,也就是说,它要修改集合,删除那些不能进行指定操作的套接口。但如果超时则返回0;如果发生错误,则返回SOCKET_ERROR,应用程序可通过WSAGetLastError()获取错误代码。其中fd_set是一个结构

3、类型说明符,代表着一系列特定套接口的集合,它的定义如下:typedef  struct  fd_set{      u_intfd_count;          /*howmanyareSET?*/      SOCKET  fd_array[FD_SETSIZE];  /*anarrayofSOCKETs*/}  fd_set;timeval是一个结构类型,它的定义如下:struct  timeval{      long    tv_sec;      /*seconds*/      long    tv_usec;      /*andmicrosecond

4、s*/};若将超时值设置为(0,0),表明select会立即返回,出于对性能方面的考虑,应避免这样的设置。以下为测试select()函数的程序,一个服务器端两个客户端下面是服务器端程序:otherstaffoftheCentre.Duringthewar,ZhuwastransferredbacktoJiangxi,andDirectorofthenewOfficeinJingdezhen,JiangxiCommitteeSecretary.Startingin1939servedasrecorderoftheWestNorthOrganization,Secreta

5、ryoftheSpecialCommitteeAfterthevictoryofthelongMarch,hehasbeentheNorthwestOfficeoftheFederationofStateenterprisesMinister,ShenmufuguSARmissions,DirectorofNingxiaCountypartyCommitteeSecretaryandrecorderoftheCountypartyCommitteeSecretary,Ministersand#define  FD_SETSIZE500#include  

6、K2.H>#pragma  comment(lib,"ws2_32")#include  int  main(){  printf("服务器端程序....");  //------①加载----------  WSADATAwsaData;  if  (WSAStartup(MAKEWORD(2,2),&wsaData)!=0)  {      printf("WSAStartupFailed,Error=【%d】",WSAGetLastError());      return  1;  }  else      printf("①加载成功

7、");  //-------②创建流式套接字------------  SOCKETs=socket(AF_INET,SOCK_STREAM,0);  if  (s==INVALID_SOCKET)  {      printf("socket()Failed,Error=【%d】",WSAGetLastError());      return  1;  }  else      printf("②已创建监听套接口:【%d】",s);  //将套接口s置于”非阻塞模式“  u_longu1=1;  ioctlsocket(s,FIONB

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

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

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