ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:120.35KB ,
资源ID:7178606      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7178606.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言socket课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言socket课程设计报告.docx

1、C语言socket课程设计报告第1章 概述TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。TCP支持的应用协议主要有:Telnet、FTP、S

2、MTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。面向连接的TCP“面向连接”就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:

3、主机A向主机B发出连接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:“可以,你什么时候发?”,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:“我现在就发,你接着吧!”,这是第三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。TCP协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用TCP协议传输数据。面向非连接的UDP协议“面向非连接”就是

4、在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就OK了。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次“

5、ping”操作发送4个数据包(如图所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效率高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。第2章 程序设计部分2.1 设计目的通过本课程设计,在学习计算机通信与网络C课程的基础上,进一步深入理解计算机通信与网络的基本理论及其协议,进一步熟练掌握UDP、TCP Client/Server模式的数据通信原理,熟悉进程通信的所要解决的问

6、题,掌握网络通信的程序编程技术。2.2 设计要求1)Java语言支持TCP/UDP及其上层的网络设计,所设计的网络通信应用系统建议采用Java语言利用Eclipse集成开发环境编程实现。课程设计按下述步骤进行:利用socket编程方法,编写一个TCP、UDP Client/Server模式的通信程序。调试并运行自己编写的实现程序。了解TCP、UDP Client/Server模式的工作原理,比较二者的不同,如出现异常情况,在课程设计报告中写出原因分析。备份保留程序代码电子文档,以备教师随时检查。2)Client/Server网络通信程序设计内容要具体详实,具有一定的编程工作量(程序代码一般应在

7、100行以上)和技术难度。3)在课程设计报告中,通过截屏图给出Client/Server网络通信或手机收发电子邮件的运行结果。4)对课程设计进行总结,写出符合规范格式要求的课程设计报告。课程设计报告撰写要求如下:每个学生必须独立完成课程设计报告。课程设计报告书写规范、文字通顺、图表清晰、数据完整、结论明确。课程设计报告后应附参考文献。提供电子文档资料。例如程序源代码、设计思路、功能结构图或程序流程图等。附录:给出程序源代码(可附主要部分或代表自己编程特色的代码)。课程设计报告封面按照学校统一要求格式编写,并装订成册。要求书面工整、美观;如果条件许可,最好打印装订成册。2.3 设计原理TCP通信

8、流程:UDP通信流程:2.4 设计方案Socket连接:根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服

9、务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。第3章 程序设计实现部分3.1 C语言的网络功能与编程简介网络编程,一定离不开套接口;那什么是套接口呢?在Linux下,所有的I/O操作都是通过读写文件描述符而产生的,文件描述符是一个和打开的文件相关联的整数,这个文件并不只包括真正存储在磁盘上的文件,还包括一个网络连接、一个命名管道、一个终端等,而套接口就是系统进程和文件描述符通信的一种方法。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供

10、TCP套接口和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等。3.2 系统原理框图3.3 程序设计服务器端:#include#include #pragmacomment(lib,“ws2_32.lib”)void main() WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return; if ( LOBYTE( wsa

11、Data.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); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR

12、); 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,inet_ntoa(addrClient.sin_addr); send(sockConn,我是沈郁,strlen(我是沈郁)+1,0); char recvchar100; recv(sockConn,

13、recvchar,100,0); printf(%sn,recvchar); closesocket(sockConn); 客户端:#include#include #pragmacomment(lib,“ws2_32.lib”)void main() WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) return; if ( LOBYTE(

14、 wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup(); return; SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr(127.19.226.97); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); connect(sockClient,(SOCKADDR *)&ad

15、drSrv,sizeof(SOCKADDR); char recvBuffer100; recv(sockClient,recvBuffer,100,0); printf(%sn,recvBuffer); send(sockClient,This is Kary,strlen(This is Kary)+1,0); closesocket(sockClient); WSACleanup(); 3.4 调试结果服务器:3.5 课程设计总结通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习

16、并实践了。本次课程设计是运用Visual C+6.0作为开发平台以及进行编写程序, 在此设计过程中主要经过了审题、需求分析与可行性研究,然后形成设计思路,设计所要实现的功能,最后进行程序的编写与调试,这个过程是不断出现问题并不断的进行修改,深深的感受到亲自动手实践的重要性。在实验的过程中发现学好基础理论知识的重要性,在设计过程中,不断遇到问题,通过老师和同学的帮助,解决了过程中出现的各种问题。 通过本次课程设计,我发现了自己的不足,希望在以后的学习中能够加强学习,提高实际应用能力,和解决问题的能力。附录:参考文献1(美)Andrew S.Tanenbaum 著,熊桂喜 王小虎译。计算机网络。北京:清华大学出版社,1998年7月第1版。2计算机网络原理与技术。刘化君 编著,高电子工业出版社,2012年6月第2版。3计算机网络与通信。刘化君等编著,高等教育出版社,2011年6月第2版。4C程序设计。谭浩强著,清华大学出版社,2005年7月第3版。5C程序设计语言。Brian W.Kernighan/Dennis M.Ritchie著,清华大学出版社。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1