clinetserver模型与socket编程接口

clinetserver模型与socket编程接口

ID:26882781

大小:305.82 KB

页数:23页

时间:2018-11-29

clinetserver模型与socket编程接口_第1页
clinetserver模型与socket编程接口_第2页
clinetserver模型与socket编程接口_第3页
clinetserver模型与socket编程接口_第4页
clinetserver模型与socket编程接口_第5页
资源描述:

《clinetserver模型与socket编程接口》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第十二章Clinet/Server模型与Socket编程接口12.1网络间进程通信12.2Client/Server模型12.3Socket编程接口12.3.1Socket基本概念12.3.2Socket系统调用12.3.3其它系统调用12.4基于Client/Server模型的Socket编程举例12.4.1Client/Server模型流程图12.4.2Server实现机制12.4.3UNIX环境下的Socket编程举例12.1网络间进程通信问题一:进程标识的问题在同一台主机上,不同进程可以用进程号(ProcessID)来标识;但在网络环境下,不能用进程号来唯一地标识某主机上的通信进程。问

2、题二:多重协议的识别问题不同协议的地址格式不同;不同协议的端口分配相互独立;不同协议的工作方式不同(比如有面向连接与无连接的区别)问题三:进程间的相互作用模式Client/Server分布式系统网络进程标识全局唯一的标识一个进程需要用一个三元组(socket地址)(协议,本地主机地址,本地端口号)一个完整的网络进程通信(包括两个用户进程)需要一个五元组来标识(一对socket地址)(协议,本地主机地址,本地端口号,远地主机地址,远地端口号)12.2Client/Server模型12.3BSDUnixSocket编程接口在因特网中,两台主机上的应用进程在通信之前,必须首先各自创建一个socket

3、,然后再通过bind系统调用对socket进行相应的地址赋值操作,最后应用进程就可以通过socket使用TCP/IP协议来发送和接收数据。每一个socket有一个唯一的整数标识符,即socket号,该socket号通常由操作系统分配,应用进程通过socket号来引用socket。BSDUnixsocket系统调用1.创建socket:socket()2.指定本地地址:bind()3.建立socket连接:connect()4.接收连接请求:listen()&accept()5.发送数据:send()&sendto()6.接收数据:recv()&recvfrom()1.创建socket-sock

4、et()创建socket的系统调用是socket(),其调用格式如下sockid=socket(af,type,protocol)返回值sockid是一个整数,即socket号,创建一个socket实际上是向系统申请一个属于自己的socket号socket()系统调用的三个参数AF(AddressFamily)TypeProtocol2.指定本地地址bind()bind()系统调用是将本地socket地址(包括本地主机地址和本地端口)与所创建的socket号联系起来,即将本地socket地址赋予该socket。bind()的调用格式为bind(sockid,localaddr,addrlen)

5、其中,sockid,已获得的socket号。localaddr,本地socket地址:包括本地主机地址和端口号。addrlen,本地socket地址长度,表示以字节为单位的本地socket地址结构的长度。3.请求建立连接connect()面向连接的客户进程通过connect()调用建立与服务器的连接对于大多数面向连接的协议(如TCP协议),connect()系统调用将在客户进程和服务器进程之间建立一条传输连接(如TCP连接),connect()调用要等到系统将传输连接建立完后才返回,否则将返回出错信息。connect()的调用格式connect(sockid,destaddr,addrlen)

6、其中参数意义如下sockid,本地socket号。destaddr,是一个指向服务器的socket地址(信宿地址)结构的指针addr1en,信宿方socket地址长度4.接收连接建立请求-listen()和accept()面向连接的服务器进程一般在某个众所周知的端口上接收客户进程的连接建立请求。服务器进程平时处于睡眠状态,一旦有连接建立请求来到时,服务器进程被唤醒并处理客户进程的连接建立请求。面向连接的服务器进程通过listen()和accept()系统调用来接收并处理客户进程的连接建立请求。1isten()系统调用表明服务器进程愿意接收客户进程的连接请求。accept()系统调用用于服务器进

7、程处理客户进程的连接建立请求。1isten()系统调用listen()一般在accept()之前调用,其调用格式为:listen(sockid,quelen)其中:sockid,本地socket号,服务器进程在此socket地址上接收连接建立请求。quelen,连接建立请求队列长度。listen()系统调用以此参数限制连接请求的排队个数,通常允许的连接请求排队长度最大值为5。accept()系统调

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

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

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