第8章计算机网络应用程序设计

第8章计算机网络应用程序设计

ID:40223808

大小:181.00 KB

页数:23页

时间:2019-07-27

第8章计算机网络应用程序设计_第1页
第8章计算机网络应用程序设计_第2页
第8章计算机网络应用程序设计_第3页
第8章计算机网络应用程序设计_第4页
第8章计算机网络应用程序设计_第5页
资源描述:

《第8章计算机网络应用程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章计算机网络应用程序设计8.1套接口API的有关概念8.2基本Socket函数8.3基于TCP的socket程序设计8.4基于UDP的socket程序设计8.5输入输出多路复用8.6并发服务器程序设计8.1套接口API的有关概念8.1.1网络应用编程接口Berkeley套接口APIWinSock远程过程调用(RPC)8.1.2socket编程模型及类型套接口可分如下5种类型:流式套接字、数据报套接字、原始套接字、SOCK_SEQPACKET及SOCK_RDM。流式套接字定义了一种可靠的面向连接的服务,实现了无

2、差错的数据传输。数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠。原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。Internet的Socket编程模型8.1.3socket地址——应用进程的标识Internet上两台主机种的进程间要进行通信,必须能够互相识别。用于标识进程的信息有两个:主机名或主机地址主机内部标识进程的标识符这两部分合在一起,成为套接口地址(计算机通信的基础构筑块)8.1.4通信进程的阻塞和非阻塞方式对于运行状态中的

3、进程来说,当某些条件不具备,如输入输出条件还没有准备好时,该进程可以有两种处理方式:阻塞与非阻塞。阻塞方式 在阻塞方式下,当输入输出条件还没有准备好时,就将进程转入阻塞状态,标记阻塞原因,并保留当前进程现场信息,然后将控制转入进程调度程序,等阻塞原因解除后,将进程状态由阻塞变成就绪等待处理机,或直接获得由调度程序再次分配的处理机,恢复阻塞的现场继续执行。非阻塞方式 在非阻塞方式下,当输入输出条件还没有准备好时,进程仍处于运行状态,通过循环,反复进行某条件的查询。一般说来,阻塞机制可以防止进程在循环反复的查询等待中

4、造成资源浪费。但是有时在应用中需要进程一直处于运行状态,不希望进程在对socket的操作中阻塞,这时就要使用非阻塞机制。8.2基本Socket函数8.2.1初始化套接口——服务绑定socket()1、功能:在应用程序中使用插口API时,首先要创建一个插口--socket。为了说明什么是socket,可以打个比方:一个电话插座,既可以接电话机打电话,也可以接传真机发传真,还可以接计算机上网。接上什么设备,就是绑定了什么服务。创建一个插口,就是创建一个通信,需要指定提供什么服务,即为一个标识符绑定某个服务,并为之分配

5、资源。这个标识就是该插口标识。应用程序调用socket()函数将创建一个插口。2、原型8.2.2本地地址绑定bind()1、功能调用函数bind(),可以将本地地址与插口绑定在一起。调用成功时,返回0;否则,返回1,并设置全局变量errno为错误类型2、原型参数说明·sockfd是函数socket返回的插口描述字;·myaddr是特定于协议的地址结构体的指针,指向本地插口地址;·addrlen是插口地址结构体的长度。8.2.3建立套接口连接-绑定远程服务器地址connect()功能函数connect()可以让客户

6、机程序建立一个与TCP服务器的连接.原型参数:·sockfd是函数socket返回的插口描述符;·servaddr指定远程服务器的插口地址;·addrlen是插口地址结构体的长度。8.2.4套接口被动转换listen()函数listen()有两个功能。(1)主动插口的被动转换socket()创建的插口都是主动插口,只可以用来(调用connect())进行主动连接(发出请求),不能接收连接请求。listen()函数将未连接的主动插口转换为被动插口,即倾听插口(listeningsocket),告诉操作系统该插口可以

7、接收连接请求。所以listen()也称为创建倾听插口函数。 (2)设置最大请求连接数listen()用一个参数(backlog)指定完成队列的最大长度。如果一个客户机的SYN数据段到达时,倾听插口的完成队列已经满了,TCP则忽略这个SYN数据段。listen()函数执行成功,返回0,服务器的TCP状态由CLOSED转变成LISTEN,成为被动模式;执行失败,返回1。原型参数:·sockfd为要转换的已绑定本地地址的插口描述符;·backlog设置请求队列的最大长度,表示被动(倾听)插口能够接收的最大数目的未接收连

8、接(相当于窗口通告)。8.2.4套接口被动转换listen()创建TCP服务器倾听插口的过程(1)首先调用socket()函数创建一个主动插口; (2)调用bind()函数进行插口地址绑定; (3)调用listen()函数进行转换。8.2.5从被动套接口的完成队列中接受一个连接请求accept()功能一个插口被创建、用bind绑定本地地址并转换成被动模式后,必须接收一个连

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

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

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