网络编程书籍讲义第九讲.ppt
《网络编程书籍讲义第九讲.ppt》由会员分享,可在线阅读,更多相关《网络编程书籍讲义第九讲.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络编程书籍讲义第九讲 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望9.1UDP网络程序设计模型网络程序设计模型9.1.1UDP程序工作流程程序工作流程根据前面介绍的知识我们知道,根据前面介绍的知识我们知道,TCP协议是基于数据流形式进行数据协议是基于数据流形式进行数据传输的,而传输的,而UDP协议是基于数据报模式进行数据传输的。它的通信双协议是基于数据报模式进行数据传输的。它的通信双方是不需要建立连接的,对于一些速度要求较高可靠性要求不高的网方是不需要建立连接
2、的,对于一些速度要求较高可靠性要求不高的网络应用程序来说,数据报通信是一个非常好的选择络应用程序来说,数据报通信是一个非常好的选择。数据报是网络层数据单元在介质上传输信息的一种逻辑分组格式,它数据报是网络层数据单元在介质上传输信息的一种逻辑分组格式,它是一种在网络中传播的、独立的、自身包含地址和端口号信息的消息,是一种在网络中传播的、独立的、自身包含地址和端口号信息的消息,它能否到达目的地、到达的时间、到达时内容是否会变化不能准确地它能否到达目的地、到达的时间、到达时内容是否会变化不能准确地知道。知道。无连接的数据报(无连接的数据报(SOCK_DGRAM)传输服务在传输层使用)传输服务在传输层
3、使用UDP协议,协议,与面向连接的通信过程不同,它的最大特点是不需要在客户和服务器与面向连接的通信过程不同,它的最大特点是不需要在客户和服务器之间先建立连接。通信的任何一方可以先发送数据,这样首先发送数之间先建立连接。通信的任何一方可以先发送数据,这样首先发送数据的一方就成了客户端,而接收数据的一方就是服务器端。在数据传据的一方就成了客户端,而接收数据的一方就是服务器端。在数据传输完成后,只要关闭套接口释放网络资源,通信过程就结束了。输完成后,只要关闭套接口释放网络资源,通信过程就结束了。第页9.1UDP网络程序设计模型网络程序设计模型9.1.1UDP程序工作流程程序工作流程无连接的数据报传输
4、服务通信时,客户端与服务器端所使用的函数是无连接的数据报传输服务通信时,客户端与服务器端所使用的函数是类似的。其工作流程如下:类似的。其工作流程如下:第一步:使用第一步:使用WSAStartup()函数检查系统协议栈的安装情况。常函数检查系统协议栈的安装情况。常用格式为:用格式为:WSAStartup(0 x0202,&wsaData);WSAStartup(MAKEWORD(2,2),&wsaData);第二步:使用第二步:使用socket()或或WSASocket()函数创建套接口,以确定函数创建套接口,以确定了相关五元组的协议。常用格式有如下几种:了相关五元组的协议。常用格式有如下几种:
5、第页9.1UDP网络程序设计模型网络程序设计模型9.1.1UDP程序工作流程程序工作流程SOCKET s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP););SOCKET s=socket(AF_INET,SOCK_DGRAM,0););SOCKET s=WSASocket(AF_INET,SOCK_DGRAM,IPPROTO_TCP,NULL,0,WSA_FLAG_OVERLAPPED););SOCKET s=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED););第页9.1UDP网络程序设计模型
6、网络程序设计模型9.1.1UDP程序工作流程程序工作流程 第三步:使用第三步:使用bind()函数将创建的套接口与本地地址绑定。它确函数将创建的套接口与本地地址绑定。它确定了相关五元组中的本地定了相关五元组中的本地IP地址和端口号。地址和端口号。常用格式:常用格式:bind(s,(const struct sockaddr*)&localaddr,sizeof(sockaddr);第四步:使用第四步:使用sendto()或或WSASendTo()函数发送数据,也可使用函数发送数据,也可使用recvfrom()或或WSARecvFrom()函数接收数据。函数接收数据。第五步:使用第五步:使用cl
7、osesocket()函数关闭套接口。函数关闭套接口。第六步:最后调用第六步:最后调用WSACleanup()函数,结束函数,结束Windows Sockets API的使用。的使用。至此,一次无连接的数据报传输过程结束。至此,一次无连接的数据报传输过程结束。第页9.1UDP网络程序设计模型网络程序设计模型9.1.2程序框架程序框架无连接的客户与服务器之间的交互通信模型可以图无连接的客户与服务器之间的交互通信模型可以图9-1表示。表示。数据交换服务数据交换服务WSAStartup()socket()bind()recvfrom()sendto()closesocket()WSACleanup(
8、)WSAStartup()socket()bind()recvfrom()sendto()closesocket()WSACleanup()图9-1 无连接的客户机/服务器程序工作流程第页9.1UDP网络程序设计模型网络程序设计模型9.1.2程序框架程序框架图图9-1所示的通信模型也明确的表示出了无连接的客户机所示的通信模型也明确的表示出了无连接的客户机/服务器程序服务器程序框架,图中在进行数据交换时,双方均可以发送数据和接收数据。框架,图中在进行数据交换时,双方均可以发送数据和接收数据。在具体编写无连接的客户机在具体编写无连接的客户机/服务器程序时,应该注意以下几个问题:服务器程序时,应该注
9、意以下几个问题:通信的一方可以不用通信的一方可以不用bind()绑定绑定IP地址和端口,而由系统自动分地址和端口,而由系统自动分配,但要注意不绑定配,但要注意不绑定IP地址和端口的一方必须首先向绑定地址的一方地址和端口的一方必须首先向绑定地址的一方发送数据。发送数据。无连接应用程序也可以调用无连接应用程序也可以调用connect()函数,但是它并不向对方发函数,但是它并不向对方发出建立连接的请求,内核只是将出建立连接的请求,内核只是将connect()中指定的目标端中指定的目标端IP地址和端地址和端口号记录下来,在以后的通信中就可以使用面向连接的数据发送口号记录下来,在以后的通信中就可以使用面
10、向连接的数据发送send()和数据接收和数据接收revc()函数。函数。第页9.1UDP网络程序设计模型网络程序设计模型9.1.2程序框架程序框架 无连接的数据报传输过程中,做为服务器的一方必须要先启动,无连接的数据报传输过程中,做为服务器的一方必须要先启动,否则客户请求传不到服务进程。否则客户请求传不到服务进程。由于无连接的客户端一般不调用由于无连接的客户端一般不调用connect(),因此在数据发送之前,因此在数据发送之前,客户与服务器之间尚未建立一个全相关(五元组),但各自通过客户与服务器之间尚未建立一个全相关(五元组),但各自通过socket()和和bind()调用建立了半相关。发送数
11、据时,发送方除指定本地套接口调用建立了半相关。发送数据时,发送方除指定本地套接口的地址外,还需指定接收方套接口的地址,从而在数据收发过程中动的地址外,还需指定接收方套接口的地址,从而在数据收发过程中动态地建立了全相关。态地建立了全相关。第页9.2UDP实例程序实例程序1实例程序说明实例程序说明本实例程序使用的编程环境为本实例程序使用的编程环境为Visual C+6.0,使用的是控制台程序,使用的是控制台程序“Win32 Console Application”。通信协议使用无连接的。通信协议使用无连接的UDP协议协议(SOCK_DGRAM)。服务器端)。服务器端IP地址由系统指定,端口号在程序
12、中地址由系统指定,端口号在程序中指定为指定为5050,用符号常量定义。,用符号常量定义。编该实例中我们编写一个基于数据报的客户机编该实例中我们编写一个基于数据报的客户机/服务器交互程序,在程服务器交互程序,在程序启动后,服务器向客户端发送序启动后,服务器向客户端发送“Hello!I am a server.”信息,客户端信息,客户端向服务器发送向服务器发送“Hello!I am a client.”信息,双方各自在接收到对方发信息,双方各自在接收到对方发送的信息后将其显示出来。送的信息后将其显示出来。图图9-2是服务器端程序执行后的结果。服务器程序在启动后等待客户机是服务器端程序执行后的结果。
13、服务器程序在启动后等待客户机的请求,如果有客户机请求后,它将向客户机发送信息的请求,如果有客户机请求后,它将向客户机发送信息“Hello!I am a server.”,并收到由客户机发送的信息,并收到由客户机发送的信息“Hello!I am a client.”。第页9.2UDP实例程序实例程序1第页9.2UDP实例程序实例程序1从图从图9-2中可以看出,服务器收到了两个客户的请求。中可以看出,服务器收到了两个客户的请求。图图9-3是客户端程序执行后的窗口。客户端程序执行时,从键盘输入服是客户端程序执行后的窗口。客户端程序执行时,从键盘输入服务器的务器的IP地址(即在命令行中输入),客户端口
14、号由系统指定,服务地址(即在命令行中输入),客户端口号由系统指定,服务器端口号指定为器端口号指定为5050。第一次执行时没有输入服务器的。第一次执行时没有输入服务器的IP地址,则显地址,则显示命令用法后返回。第二次执行时输入正确的命令行格式,则显示数示命令用法后返回。第二次执行时输入正确的命令行格式,则显示数据成功发送的提示信息,然后显示从服务器收到的信息。服务器则显据成功发送的提示信息,然后显示从服务器收到的信息。服务器则显示从客户收到的信息示从客户收到的信息“Hello!I am a client.”,然后显示客户的,然后显示客户的IP地址地址和端口号,最后显示数据成功发送的提示信息。第三
15、次执行时也输入和端口号,最后显示数据成功发送的提示信息。第三次执行时也输入了正确的命令行格式,但注意服务器所显示的端口号与前一次执行时了正确的命令行格式,但注意服务器所显示的端口号与前一次执行时不同(如图不同(如图9-2所示),因为客户机的端口号由系统自动分配。所示),因为客户机的端口号由系统自动分配。第页9.2UDP实例程序实例程序1第页9.3UDP实例程序实例程序29.3.1 程序要求程序要求在在本本节节中中,我我们们实实现现一一个个名名叫叫Echo的的协协议议(有有些些资资料料中中叫叫回回声声协协议议)。Echo协协议议是是一一个个非非常常简简单单的的协协议议,它它主主要要用用于于网网络
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 书籍 讲义 第九
限制150内