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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

计算机网路课程设计毕业设计Word格式.docx

1、IP功能:IP的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。这意味着在IP将数据递交给接收站点以前不在传输站点和接收站点之间建立对话(虚拟链路)。它只是封装和传递数据,但不向发送者或接收者报告包的状态,不处理所遇到的故障。TCP:TCP(传输控制协议Transmission Control Protocol)是重要的传输层协议,传输层软件TCP的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输。TCP 协议具有严格的内装差错检验算法确保数据的完整性。TCP 是面向字节的顺序协议,这意味着包内的每

2、个字节被分配一个顺序编号,并分配给每包一个顺序编号。用户数据报文协议:UDP(用户数据报协议User Datagram Protocol)也是TCP/IP 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。UDP 的主要作用是分配和管理端口编号,以正确无误的识别运行在网络站点上的个别应用程序。由于它执行功能时具有较低的开销,因而执行速度比TCP快。它多半用于不需要可靠传输的应用程序,例如网络视频点播和视频会议等。b.网络编程基础socket概述: linux中的网络编程通过sock

3、et接口实现。Socket既是一种特殊的IO,它也是一种文件描述符。一个完整的Socket 都有一个相关描述协议,本地地址,本地端口,远程地址,远程端口;每一个Socket 有一个本地的唯一Socket 号,由操作系统分配。套接字有三种类型:流式套接字(SOCK_STREAM):流式的套接字可以提供可靠的、面向连接的通讯流。它使用了TCP协议。TCP 保证了数据传输的正确性和顺序性。数据报套接字(SOCK_DGRAM):数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议UDP协议。原始套接字:原始套接字允许对低层协议如IP或IC

4、MP直接访问,主要用于新的网络协议实现的测试等。struct sockaddr unsigned short sa_family; /* address族, AF_xxx */char sa_data14; /* 14 bytes的协议地址 */;sa_family 一般来说, IPV4使用“AF_INET”。sa_data 包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一起的。struct sockaddr_in short int sin_family; /* Internet地址族 */unsigned short int sin_port; /* 端口号 */str

5、uct in_addr sin_addr; /* Internet地址 */unsigned char sin_zero8; /* 添0(和struct sockaddr一样大小)*/这两个数据类型是等效的,可以相互转换,通常使用sockaddr_in更为方便地址字节序列转化:因为每一个机器内部对变量的字节存储顺序不同(有的系统是高位在前,底位在后,而有的系统是底位在前,高位在后 ),而网络传输的数据大家是一定要统一顺序的。所以对与内部字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。下面给出套接字字节转换程序的列表:htons()“Host to Network Short” 主

6、机字节顺序转换为网络字节顺序(对无符号短型进行操作2bytes)htonl()“Host to Network Long”主机字节顺序转换为网络字节顺序(对无符号长型进行操作4bytes)ntohs()“Network to Host Short”网络字节顺序转换为主机字节顺序(对无符号短型进行操作2bytes)ntohl()“Network to Host Long ”网络字节顺序转换为主机字节顺序(对无符号长型进行操作4bytes)三 程序设计原理图四 程序源代码五 Server.cpp#include winsock2.hstring.hconio.hiostream/创建套接字描述符

7、SOCKET server;SOCKET client;WSADATA WSAData;int WSAreturn;/用来存放ip地址和端口号struct sockaddr_in local;struct sockaddr_in from;/远程主机的地主长度 int fromlen = sizeof(from);/信息缓冲区char information50;/有客户登录时返回的第一条信息 char welcome=欢迎您登陆李仕贤主机!-零度工作室n;/收到信息的缓冲区char receive256;char chat256;char c;int i=0;bool cansend=fal

8、se;int GetIp() /初始化 说明版本号 WSAreturn = WSAStartup(0x101,&WSAData);if(WSAreturn) printf(serverroot#发生一个未知错误!n);return 0; /AF-INET代表Internet(TCP/IP)地址族local.sin_family = AF_INET;/ip为INADDR_ANY,系统会自动填入本机IP地址local.sin_addr.s_addr = INADDR_ANY;/端口号 设为8888,以后通信就通过此端口 local.sin_port = htons(8888);/创建套接字,指定是

9、流式套接字是用tcp协议server = socket(AF_INET,SOCK_STREAM,0);if(server=INVALID_SOCKET ) serverroot#无法创建套接字!/ 套接字绑定端口和ip地址,所以信息到达主机后就能找到进程,if(bind(server,(sockaddr *)&local,sizeof(local)!=0) serverroot#无法绑定套接字!/侦听 侦听数为5if(listen(server,5)!serverroot#无法监听端口!while(true) serverroot#正在等待用户连接.n/接受客户端的连接,没有连接时则阻塞。cl

10、ient = accept(server,(struct sockaddr *)&from,&fromlen);/有连接 ,则发送一条欢迎的信息strcpy(information,inet_ntoa(from.sin_addr);strcat(welcome,information); printf(serverroot#接受来自%s的连接.n,inet_ntoa(from.sin_addr);serverroot#正在发送欢迎消息.n/发送信息send(client,welcome,strlen(welcome),0);serverroot#欢迎消息信息已经成功发送至客户端!while(1

11、) if(!cansend) serverroot#正在等待对方发来消息.ncansend=false;/ 接受信息,如果信息没有,则阻塞。recv(client,receive,sizeof(receive),0);*接受到的消息*nserverroot#%sn,receive);*结束*ncansend=true;else serverroot#请输入下一条消息:scanf(%s0,&chat);send(client,chat,strlen(chat),0);nserverroot#已经成功发送出信息!/关闭套接字closesocket(client);closesocket(serve

12、r);WSACleanup();return 1;void main() int ok;ok = GetIp(); / 套接字的创建,信息的发送和接收if(ok=0) serverroot#无法完成请求!Client.cppstruct sockaddr_in to;char information256;我已经登陆到你的主机!/设置信息的缓冲区char chatto256;char servername256;char chatfrom256;long result;bool cansend=true;/连接主机。int connection() /初始化。/创建套接字,用来与服务器连接cl

13、ient = socket(AF_INET,SOCK_STREAM,0);/表示使用tcp协议 to.sin_family = AF_INET;/设置端口号,要转化为网络的大端的地址格式to.sin_port = htons(8888);serverroot#请输入要登陆的IP:%sservername);/主机的ip地址,要进行字节序列转化和地址格式转化 to.sin_addr.s_addr = inet_addr(servername);serverroot#正在连接.n/连接主机,连接失败返回-1result = connect(client,(struct sockaddr *)&to

14、,sizeof(to);if(SOCKET_ERROR=result) / 连接失败 serverroot#无法连接到目标主机!/接收由服务器发来的信息 recv(client,receive,sizeof(receive),0);*欢迎消息消息*n*结束*nif(cansend) serverroot#请输入下一条信息:/从键盘获得信息chatto);/ 将信息发送到服务器send(client,chatto,strlen(chatto),0);nserverroot#已经成功发送信息!/cansend 置零 下一步接收信息 正在等待对方发来消息.n/接收信息,信息还没到达时候就阻塞recv(client,chatfrom,sizeof(chatfrom),0);*接收到的消息*n,chatfrom);/ 下一步发送信息/ 关闭套接字connection();六 参考文献1.计算机网络(第三版) 安淑之 黄彦 中国铁道出版社2.linux 编程指南 张辉

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

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