版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章概述TCP (Transmission ControlProtocol)和 UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有: Tel net、FTP、SMTP等;UDP支持的应用层
2、协议主要有:NFS (网络文件系统)、SNMP (简单网络管理协议)、DNS (主域名称系统)、TFTP (通用文件传输协议)等。面向连接的TCP面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP ( Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次 对话才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这 三次对话的简单过程:主机A向主机B发出
3、连接请求数据包:我想给你发数据,可以吗?”这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收, 协调工作)的数据包:可以,你什么时候发? ”这是第二次对话;主机 A再发出一个数据包确认主机B的要求同步: 我现在就发,你接着吧! ”这是第三次对话。三次j“对话”的目的是使数据包的发送 和接收同步,经过三次 对话”之后,主机A才向主机B正式发送数据。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的 其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。面向非连接的UDP协议面向非连接就是在正式通信前不必与
4、对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就0K 了。UDP( User DataProtocol,用户数据报协议)是与 TCP相对应的协议。它是面向非连接的协议, 它不与对方建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping命令来测试两台主机之间 TCP/IP通信是否正常,其实 “ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。 例如,在默认状态下,一次“ping操
5、作发送4个数据包(如图所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为 UDP协议没有连接的过程,所以它的 通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。第 2 章 程序设计部分2.1 设计目的通过本课程设计,在学习计算机通信与网络 C课程的基础上,进一步深入理解计 算机通信与网络的基本理论及其协议,进一步熟练掌握UDP、TCP Client/Server 模式的数据通信原理,熟悉进程通信的所要解决的
6、问题,掌握网络通信的程序编程技术。2.2 设计要求1)Java语言支持TCP/UD及其上层的网络设计,所设计的网络通信应用系统建议采用 Java 语言利用 Eclipse 集成开发环境编程实现。课程设计按下述步骤进行: 利用 socket 编程方法,编写一个 TCP、UDPClient/Server 模式的通信程序。 调试并运行自己编写的实现程序。 了解 TCP、UDP Client/Server 模式的工作原理,比较二者的不同,如出现异常情 况,在课程设计报告中写出原因分析。 备份保留程序代码电子文档,以备教师随时检查。2)Client/Server 网络通信程序设计内容要具体详实,具有一定
7、的编程工作量(程 序代码一般应在 100行以上)和技术难度。3)在课程设计报告中,通过截屏图给出 Client/Server 网络通信或手机收发电子邮 件的运行结果。4)对课程设计进行总结,写出符合规范格式要求的课程设计报告。课程设计报告撰 写要求如下: 每个学生必须独立完成课程设计报告。 课程设计报告书写规范、文字通顺、图表清晰、数据完整、结论明确。 课程设计报告后应附参考文献。 提供电子文档资料。例如程序源代码、设计思路、功能结构图或程序流程图等。 附录:给出程序源代码(可附主要部分或代表自己编程特色的代码)。 课程设计报告封面按照学校统一要求格式编写,并装订成册。要求书面工整、美观; 如
8、果条件许可,最好打印装订成册。2.3 设计原理TCP通信流程:处理服拆诂求1_阴答垃霁J工I WH削)一1Vreadt )T:白皿打*closet )UDP通信流程:服务器2.4 设计方案Socket 连接:根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分 为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接 的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套 接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端 套接字的地址和端口号
9、,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求, 它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户 端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态, 继续接收其他客户端套接字的连接请求。第3章程序设计实现部分3.1 C语言的网络功能与编程简介网络编程,一定离不开套接口;那什么是套接口呢?在 Linux下,所有的I/O操作 都是通过读写文件描述符而产生的,文件描述符是一个和打开的文件相关联的整数,这 个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一
10、个终端等,而套接口就是系统进程和文件描述符通信的一种方法。目前最常用的套接口 是字:字节流套接口(基于TCP和数据报套接口(基于UDP)当然还有原始套接口(原始 套接口提供TCP套接口和UDP套接口所不提供的功能,如构造自己的 TCP或 UDP分组)等。3.2系统原理框图服务器端客户机/服务器Socket通讯的工作模式图3.3程序设计服务器端:#i nclude#include #pragma comment(lib ,“ ws2_32.lib ” )void main()WORD wVersionRequested;WSADATA wsaData;int err;wV ersionReque
11、sted = MAKEWORD( 1,1 );err = WSAStartup( wV ersionRequested,&wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup();return;SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
12、addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR); listen(sockSrv,5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while (1)SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len); char sendbuffer100;sprintf(sendbuffer,Welcome %s here,in
13、et_ntoa(addrClient.sin_addr); send(sockConn,我是沈郁,strlen(我是沈郁)+1,0);char recvchar100; recv(sockConn,recvchar,100,0);printf(%sn,recvchar); closesocket(sockConn);客户端:#include#include #pragmacomment(lib ,“ ws2_32.lib ”)void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersio nRequested= MAKEWOR
14、D( 1,1);err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0) return;if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) != 1 ) WSAClea nup();return;SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_u n. S_addr=i net_addr(7); add
15、rSrv.sin_family=AF_INET;addrSrv.sin_port=hto ns(6000);connect(sockClient,(SOCKADDR *)&addrSrv,sizeof(SOCKADDR); char recvBuffer100;recv(sockClie nt,recvBuffer,1OO,O);prin tf(%sn,recvBuffer);send(sockClient,This is Kary,strlen(This is Kary)+1,0); closesocket(sockClie nt);WSAClea nup();3.4调试结果服务器:Crsd
16、ellDoc mentsLabVlEW DataDebugl ,exele lcoine 172 _19 226 . 97 here Presskey to continue3.5课程设计总结通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩 展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识 点都认真复习并实践了。本次课程设计是运用 Visual C+6.0作为开发平台以及进行编写 程序,在此设计过程中主要经过了审题、需求分析与可行性研究,然后形成设计思路,设 计所要实现的功能,最后进行程序的编写与调试,这个过程是不断出现问题并不断的进 行修改,深深的感受到亲自动手实践的重要性。在实验的过程中发现学好基础理论知识 的重要性,在设计过程中,不断遇到问题,通过老师和同学的帮助,解决了过程中出现的各种问题。 通过本次课程设计,我发现了自己的不足,希望在以后的学习中能够加强学习,提 高实际应用能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024建材加盟合同书范文
- 家庭兼职协议
- 2024年运载火箭吊装设备项目发展计划
- 青岛汽车买卖服务合同(34篇)
- 2024年天猫养车项目建议书
- 新高考语文一轮复习古诗文默写+阅读闯关练习第2篇 《劝学》(原卷版)
- 妇产科护理年终工作总结范文(26篇)
- 2024年硬质材料加工机床及其零件项目建议书
- 2023年哈尔滨巴彦县大学生乡村医生专项计划招聘笔试真题
- 2024小区隔音改造施工合同范本
- 自然拼读法-图文.课件
- 苏教版(2024新版)一年级上册科学全册教案教学设计
- 创新创业实训智慧树知到期末考试答案章节答案2024年西安理工大学
- 2024届宜宾市九年级语文上学期期中考试卷附答案解析
- 大学生国家安全教育智慧树知到期末考试答案2024年
- 2024继续教育《医学科研诚信与医学了研究伦理》答案
- MOOC创新创业与管理基础(东南大学)
- 硫磺安全技术说明书MSDS
- 上公司财务风险分析与防范——以苏宁云商为例
- 价值观考核评定表
- 球罐施工技术方案(完整版)
评论
0/150
提交评论