logo资料库

网络编程实现网络对时课程设计.doc

第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
资料共17页,剩余部分请下载后查看
课题名称: TCP/IP 协议及网络编程技术课程设计 子课题 : 实现网络对时程序 院 (系): 计算机学院 专 班 业: 级: 学生姓名: 学 号: 通信工程 hshengxue 指导教师: 周坚和 2012 年 6 月 22 日 目录 - 0 -
摘要………………………………………………………………3 引言………………………………………………………………3 一、课程设计的目的和意义……………………………………3 二、课程设计的内容和要求……………………………………3 三、课程设计所需了解的相关内容和技术……………………4 (一)、 套接口…………………………………………………4 (1) 套接口的概念……………………………………….4 (2) 套接口的分类…………………………………………5 (3) Socket 工作模式………………………………………6 (二)、所用的关键技术…………………………………………6 (三)Winsock API 的使用………………………………………7 四、课程设计过程………………………………………………7 (一)设计思路…………………………………………………7 (1)服务器的主要工作流程…………………………………7 (2)客户机的工作流程………………………………………8. (3)服务器的工作流程………………………………………8 五、 编程实现…………………………………………………9 (一) 服务器端的实现………………………………………9 (二) 客户端的实现…………………………………………11 六、 小结………………………………………………………15 七、参考文献…………………………………………………16 摘要: - 1 -
网络应用程序是通过网络使用通信协议实现进程间的通信;本项 目采用软件工程的方法,综合运用网络程序设计,以 visual c++6.0 作为系统前台应用程序开发工具 。此局域网聊天工具采用客户端/ 服 务端 (C /S )模 式和 UDP 连 接。 它由 两 个程 序 组成 :服 务 器 (Server)和客户端(Client),首先需要登录服务器,再登录客户端, 需要指定服务器IP地址以便与服务器建立连接。登录后,客户可以 在自己的界面上与另一指的定的客户端进行聊天。服务器模块主要用 来维护网络用户用户的信息,包括用户IP地址,聊天内容;聊天客 户端模块主要包括用户连接,发送信息,接收信息。是一套用于 Internet 网络使用的网络聊天工具,其操作简单,灵活性好,运用 也比较稳定。 关键词:网络,聊天程序,客户端/服务端,UDP 传输控制协议。 0、引言 网络应用程序是通过网络使用通信协议实现进程间的通信,UDP 是 TCP/IP 协议族为传输层设计的两个协议之一,UDP 提供的是无连 接、不可靠的网络传输协议,在进行网络应用程序设计时,TCP/IP 协议的核心内容被封装在操作系统中。网络应用程序要使用 UDP 协议 来实现自己的功能,只能通过由系统提供给用户的 UDP 协议编程接口 来实现。因此,可以说设计网络应用程序就是利用网络编程接口(API) 进行程序设计的过程。在 Windows 环境下的网络应用程序编程接口叫 Windows Sockets,即套接口。 - 2 -
一、课程设计的目的和意义 UDP 是 TCP/IP 协议族为传输层设计的两个协议之一,它在进程 与进程的通信过程中,提供了有限的差错校验功能,是一种无连接的, 不可靠的协议。UDP 在一个较低的水平上完成进程之间的通信,在收 到分组的时候没有流量控制机制也没有确认机制,适用于可靠性比较 高的局域网。由于 UDP 采取了无连接的方式,因此协议简单,在一些 特定的应用中协议运行效率高。UDP 适合一些实时的应用,如 IP 电 话,视频会议,它们要求源主机以恒定的速率发送数据,并且在网络 出现拥塞时,可以丢失一些数据,但是延迟不能太大。基于这些特点, 流式多媒体通信、多播等应用在传输层采用的就是 UDP 协议。因为 UDP 具有 TCP 所望尘莫及的速度优势。虽然 TCP 协议中植入了各种安 全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑 使速度受到严重的影响。反观 UDP 由于排除了信息可靠传递机制,将 安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使 速度得到了保证。 二、课程设计的内容和要求 用 socket 编 程 接 口 编 写 两 个 程 序 , 分 别 为 客 户 机 程 序 (client.cpp)和服务器程序(server.cpp),使用 UDP 传输层协议, 能实现下述功能:客户端能够从服务器端取出标准时间,然后同步本 机时钟。 三、课程设计所需了解的相关内容和技术 - 3 -
(一)、 套接口 (1)套接口的概念 WindowsSockets API 依靠套接口 Socket 进行通信。套接口可 看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。 通信时,其中的一个网路应用程序将要传输的一段信息写入它所在主 机的 Socket 中,该 Socket 通过网络接口卡(NIC)的传输介质将这段 信息发送到另一台主机的 Socket 中,使这段信息能传送到其它程序 中,如图 1 所示。[1] 当主机 A 上的网络应用程序 A 要发送数据时,通过调用数据发 送函数首先将要发送的一段信息写入 Socket 中,Socket 中的内容通 过主机 A 的网络管理软件由主机 A 的网络接口卡发送到主机 B,主机 B 的网络接口卡接收到这段信息后,再传给主机 B 的网络管理软件, 网络管理软件将这段信息保存在主机 B 的 Socket 中,然后程序 B 才 能在 Socket 中读取并使用这段信息。由此看来,Socket 的本质是通 信过程中所要使用的一些缓冲区及一些相关的数据结构。 (2)套接口的分类 为了满足不同的通信程序对通信质量和性能的要求,一般的网 - 4 -
络系统提供了三种不同类型的套接口,以供用户在设计网络应用程序 时根据不同的要求来选择。这三种套接口分别是: (1)流式套接口(SOCK_STREAM),它提供了一种可靠的、面向连接 的双向数据传输服务,实现数据无差错、无重复地发送。流失套接口 内设流量控制,被传输的数据看作是无记录边界的字节流。在 TCP/IP 协议族中,使用 TCP 协议来实现字节流的传输,当用户想要发送大批 量的数据或者对数据的传输有较高的要求时,使用流式套接口。 (2)数据报套接口(SOCK_DGRAM),它提供了一种无连接、不可靠的 双向数据传输服务。免费论文。数据包以独立的包形式被发送,并保 留了记录边界,不提供可靠性保证。数据在传输过程中可能会丢失或 重复,并且不能保证在接收端数据按发送顺序接收。免费论文。在 TCP/IP 协议族中,使用 UDP 协议来实现数据报套接口。在同一台计 算机上或负载较轻的 LAN 上,因为出现差错的可能性较小,所以可以 使用数据报套接口进行数据传输,这样通信的质量可以得到保证,并 且通信的效率较高。 (3)原始套接口(SOCK_RAW),该套接口允许对较低层协议(如 IP 或 ICMP)进行直接访问,常用于检验新的网络协议实现,也可用于 测试新配置或安装的网络设备。 (3) Socket 工作模式 Socket 以客户/服务器模式工作。Socket 服务器程序通常事先已 经启动,并在一个众所周知的端口监听对服务的请求。Socket 客户 - 5 -
应用程序需要某种服务时,便向提供服务的 Socket 服务器发出请求, 服务器接收到请求后,就响应客户提出的请求。 (二)、所用的关键技术 (1)UDP 协议 UDP 是一个无连接协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把 它扔到网络上。在发送端,UDP 传送数据的速度仅仅是受应用程序生 成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP 把 每个消息段放在队列中,应用程序每次从队列中读一个消息段。 (2)TCP/IP 协议 在 T C P / I P 协 议 族 中 , 有 两 个 互 不 相 同 的 传 输 协 议: T C P(传输控制协议)和 U D P(用户数据报协议)。T C P 为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序 交给它的数据分成合适的小块交给下面的网络层,确认接收到的分 组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠 性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方 面, U D P 则为应用层提供一种非常简单的服务。它只是把称作 数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能 到达另一端。任何必需的可靠性必须由应用层来提供。TCP/IP 协议 与 Winsock 网络编程接口 Winsock 规范不是一种网络协议,而是一套开放的、支持多种协议的 - 6 -
Windows 写的网络编程接口。Winsock 可以访问很多种网络协议,可 以把它当作一种协议的封装。现在的 Winsock 已经基本上实现了与协 议无关,可以使用 Winsock 来调用协议的功能 (3)Winsock API 的使用 下面使用 Winsock 进行编程时涉及的主要函数: WSAStartup 函数、WSACleanup 函数、socket 函数、closesocket 函 数、send(sendto)函数、recv(recvfrom)函数、bind 函数、listen 函数、accept 函数、connect 函数 四、课程设计过程 (一)设计思路 设计 UDP 服务器的过程如下所示。首先,创建又一个 Socket 并监 听。然后启动线程接收数据。用一个链表保存所有连上的客户,并通 知连接成功。这样,客户就有机会处理这一事件并作一些动作。最后, 当客户断开时,向服务器发送一个事件,服务器就可以做一些收尾工 作。其中最关键的部分是收发部分和数据处理部分。 (1)服务器的主要工作流程如图 1 所示: - 7 -
分享到:
收藏