Ch12 Socket接口.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Ch12 Socket接口

第十二章 Clinet/Server模型与Socket编程接口 12.1 网络间进程通信 12.2 Client/Server模型 12.3 Socket编程接口 12.3.1 Socket基本概念 12.3.2 Socket系统调用 12.3.3其它系统调用 12.4 基于Client/Server模型的Socket编程举例 12.4.1 Client/Server模型流程图 12.4.2 Server实现机制 12.4.3 Socket编程举例 12.1 网络间进程通信 12.2 进程之间通信模型 12.3 Socket套接字编程接口 在因特网中,为了方便网络上进程之间使用TCP/IP协议进行通信,专门设计了一套编程接口—套接字(Socket)编程接口,所谓套接字(Socket),就是用于标识通信进程的(主机地址、端口号、使用协议)的一个组合ID,套接字编程接口包括以下主要API: 创建socket:socket( ) 指定本地地址:bind( ) 建立socket连接:connect( ) 接收连接请求:listen( ) 、accept( ) 发送数据:send( ) sendto( ) 接收数据:recv( ) recvfrom( ) 1. 创建套接字-socket( ) 创建套接字socket,其调用格式如下: sockid=socket(af,type,protocol) af(Address Family)—主机的地址类型,AF_INET 表示使用TCP/IP地址; type—通信服务类型,sock_STREAM表示面向连接的字符流通信方式,而sock_DGRAM表示无连接的数据报方式等; protocol—通信协议,目前可由type来确定(值为0); 返回值sockid是一个整数,即socket号,创建一个socket实际上是向系统申请属于本进程的一个特殊ID,应用进程将通过该socket ID来进行通信。 2. 指定本地地址bind( ) bind( )是将本地socket地址(包括本地主机地址和本地端口等)与所创建的socket号联系起来,bind( )的调用格式为: bind(sockid,localaddr,addrlen ) sockid,已获得的socket号。 localaddr,本地socket地址:包括本地主机地址和端口号 addrlen,本地socket地址长度,表示以字节为单位的本地socket地址结构的长度。 3. 请求建立连接connect( ) 面向连接通信的客户端进程通过connect( ) 调用主动请求建立与服务器的连接,当连接建立成功后,就可以通过sockid标识的连接号进行通信,connect() 的调用格式为: connect(sockid,destaddr,addrlen ) sockid,本地socket号。 destaddr,是一个指向服务器的socket地址结构(包括IP地址、端口等信息)的指针 addr1en,信宿方socket地址长度 4. 接收连接建立请求-listen( )和accept( ) 面向连接的服务器进程一般在某个众所周知的端口上接收客户进程的连接建立请求。服务器进程平时处于睡眠状态,一旦有连接建立请求来到时,服务器进程被唤醒并处理客户进程的连接建立请求。 面向连接的服务器进程通过listen( )和accept( ) 系统调用来接收并处理客户进程的连接建立请求。 1isten( )系统调用将服务器进程设置为侦听或服务等待状态; accept( )系统调用用于服务器进程受理客户进程的连接建立请求。 1isten( )系统调用 listen( ) 使服务器端的服务进程处于连接侦听或等待状态,如果有客户端建连请求到来,则把它放入到等待队列中排队等待处理,其调用格式为: listen(sockid,quelen) 其中: sockid,本地socket号,服务器进程在此socket地址上接收连接建立请求。 quelen,服务端连接建立请求队列长度。listen( )系统调用以此参数限制连接请求的排队个数,通常允许的连接请求排队长度最大值为5。 accept( )系统调用 accept( )用于服务器进程处理客户进程的连接建立请求,当等待队列没有连接请求时,服务进程处于睡眠状态,否则,响应并处理建连请求,其调用格式如下: newsock = accept(sockid,clientaddr,addrlen) sockid,本地socket号。 clientaddr,指向客户端socket地址结构的指针,初始值为空,当accept调用返回后,客户进程的socket地址被填入该地址结构中. addrlen,初值为0,当

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档