电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

湖南科技大学计算机网络课程设计报告

9页
  • 卖家[上传人]:ji****72
  • 文档编号:37985794
  • 上传时间:2018-04-25
  • 文档格式:DOC
  • 文档大小:74.50KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、计算机网络 课程设计报告课程设计报告姓姓名:名: 学学号:号: 班班级:级: 指导老师:指导老师: 湖南科技大学计算机科学与工程学院湖南科技大学计算机科学与工程学院2016 年年 1 月月网络聊天程序的设计与实现网络聊天程序的设计与实现一、一、 课程设计题目课程设计题目了解 Socket 通信的原理,在此基础上编写一个聊天程序。二、二、 课程设计内容课程设计内容1 1TCP/IPTCP/IP 协议与协议与 WinSockWinSock 网络编程接口的关系网络编程接口的关系WinSock 并不是一种网络协议,它只是一个网络编程接口,也就是说,它不是协议, 但是它可以访问很多种网络协议,你可以把它当作一些协议的封装。现在的 WinSock 已经 基本上实现了与协议无关。你可以使用 WinSock 来调用多种协议的功能。那么,WinSock 和 TCP/IP 协议到底是什么关系呢?实际上,WinSock 就是 TCP/IP 协议的一种封装,你可 以通过调用 WinSock 的接口函数来调用 TCP/IP 的各种功能.例如我想用 TCP/IP 协议发送 数据,你就可以使用 WinSock 的接

      2、口函数 Send()来调用 TCP/IP 的发送数据功能,至于具 体怎么发送数据,WinSock 已经帮你封装好了这种功能。2.2. WinSockWinSock 编程简单流程编程简单流程WinSock 编程分为服务器端和客户端两部分,TCP 服务器端的大体流程如下: 对于任何基于 WinSock 的编程首先必须要初始化 WinSock DLL 库。 int WSAStarup( WORD wVersionRequested,LPWSADATA lpWsAData )。 wVersionRequested 是我们要求使用的 WinSock 的版本。 调用这个接口函数可以初始化 WinSock 。 然后必须创建一个套接字(Socket)。 SOCKET Socket(int af,int type,int protocol); 套接字可以说是 WinSock 通讯的核心。WinSock 通讯的所有数据传输,都是通过套接 字来完成的,套接字包含了两个信息,一个是 IP 地址,一个是 Port 端口号,使用这两个 信息,就可以确定网络中的任何一个通讯节点。 当调用了 Socket()接口函数

      3、创建了一个套接字后,必须把套接字与你需要进行通讯的 地址建立联系,可以通过绑定函数 bind 来实现这种联系。 int bind(SOCKET s,const struct sockaddr FAR* name,int namelen) ; struct sockaddr_in short sin_family ; u_short sin_port; struct in_addr sin_addr ; char sin_sero8 ; 就包含了需要建立连接的本地的地址,包括地址族、IP 和端口信息。sin_family 字段 必须把它设为 AF_INET,这是告诉 WinSock 使用的是 IP 地址族。sin_port 就是要用来通讯 的端口号。sin_addr 就是要用来通讯的 IP 地址信息。 在这里,必须还得提一下有关大头(big-endian)小头(little-endian)。因为各种不同的计 算机处理数据时的方法是不一样的,Intel X86 处理器上是用小头形式来表示多字节的编号, 就是把低字节放在前面,把高字节放在后面,而互联网标准却正好相反,所以,必须把主 机字节转

      4、换成网络字节的顺序。WinSock API 提供了几个函数。把主机字节转化成网络字节的函数; u_long htonl(u_long hostlong); u_short htons(u_short hostshort); 把网络字节转化成主机字节的函数; u_long ntohl(u_long netlong); u_short ntohs(u_short netshort) ; 这样,设置 IP 地址和 port 端口时,就必须把主机字节转化成网络字节后,才能用 Bind()函数来绑定套接字和地址。 当绑定完成之后,服务器端必须建立一个监听的队列来接收客户端的连接请求。 int listen(SOCKET s,int backlog); 这个函数可以把套接字转成监听模式。 如果客户端有了连接请求,我们还必须使用 int accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen); 来接受客户端的请求。 现在基本上已经完成了一个服务器的建立,而客户端的建立的流程则是初始化 WinSock,然后创建 Socket 套接字,再使

      5、用 int connect(SOCKET s,const struct sockaddr FAR* name,int namelen) ; 来连接服务端。 计算机网络(第 6 版)295 页图 6-32 所示的系统调用使用顺序:3 3VCVC 中中 socketsocket 编程步骤编程步骤服务器端编程的步骤: 1:加载套接字库,创建套接字(WSAStartup()/socket(); 2:绑定套接字到一个 IP 地址和一个端口上(bind(); 3:将套接字设置为监听模式等待连接请求(listen(); 4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept(); 5:用返回的套接字和客户端进行通信(send()/recv(); 6:返回,等待另一连接请求; 7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup()。 客户端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket(); 2:向服务器发出连接请求(connect(); 3:和服务器端进行通信(send()/recv(); 4:关闭套接字,关

      6、闭加载的套接字库(closesocket()/WSACleanup()。三、三、 结果及结果分析结果及结果分析服务器端:客服端:客户端发送 hello,服务器端接收 hello;然后服务器端发送 hi,客户端接收 hi。客户使用 send 发送请求,而服务器使用 send 发送回答。服务器使用 recv 接收客户用 send 调用发送的请求。客户在发完请求后用 recv 接收回答。在调试过程中,曾输出了“烫烫烫烫烫烫烫烫烫烫烫烫” 。先将服务器端设为活动工程,再运行,然后将客户端设为活动工程,再运行,即可。由于程序的缺陷,当运行多个客户端时,多个客户端竞争与服务器端连接,仅能一个客户端与服务器端相连。基于基于 IP 多播的网络会议程序多播的网络会议程序一、 课程设计题目课程设计题目设计一个图形界面的网络会议程序(实现文本多播方式即可) 。二、 课程设计内容课程设计内容在局域网中,管理员常常需要将某条信息发送给一组用户。如果使用一对一的发送方法,虽然是可行的,但是过于麻烦,也常会出现漏发、错发。为了更有效的解决这种组通信问题,出现了一种多播技术(也常称为组播通信) ,它是基于 IP 层的

      7、通信技术。众所周知,普通 IP 通信是在一个发送者和一个接收者之间进行的,我们常把它称为点 对点的通信,但对于有些应用,这种点对点的通信模式不能有效地满足实际应用的需求。 广播也是一种实现一对多数据通信的模式,但广播与多播在实现方式上有所不同。广播是 将数据从一个工作站发出,局域网内的其他所有工作站都能收到它。这一特征适用于无连 接协议,因为 LAN 上的所有机器都可获得并处理广播消息。使用广播消息的不利之处是 每台机器都必须对该消息进行处理。多播通信则不同,数据从一个工作站发出后,如果在 其它 LAN 上的机器上面运行的进程表示对这些数据“有兴趣“,多播数据才会发给它们。编程步骤编程步骤1、启动 Visual C+6.0,创建一个控制台项目工程 MultiCase。#define MCASTADDR “233.0.0.1“ /多播组地址 #define MCASTPORT 5150 /本地端口号 Receiver 项目实现步骤: (1)、创建一个 SOCK_DGRAM 类型的 Socket。 (2)、将此 Socket 绑定到本地的一个端口上,为了接收服务器端发送的多播数据。 loc

      8、al.sin_family = AF_INET; local.sin_port = htons(MCASTPORT); local.sin_addr.s_addr = INADDR_ANY; if( bind(sock,(struct sockaddr*) closesocket(sock); WSACleanup(); return -1; (3)、加入多播组。 remote.sin_family = AF_INET; remote.sin_port = htons(MCASTPORT); remote.sin_addr.s_addr = inet_addr( MCASTADDR ); mcast.imr_multiaddr.s_addr = inet_addr(MCASTADDR); mcast.imr_interface.s_addr = INADDR_ANY;if( setsockopt(sockM,IPPROTO_IP,IP_ADD_MEMBERSHIP,(char*)closesocket(sockM);WSACleanup();return -1; (4)、接收多播数据。

      9、 Sender 实现步骤: (1)、创建一个 SOCK_DGRAM 类型的 Socket。 (2)、加入多播组。 remote.sin_family = AF_INET; remote.sin_port = htons(MCASTPORT); remote.sin_addr.s_addr = inet_addr( MCASTADDR ); if( sockM = WSAJoinLeaf(sock,(SOCKADDR*) closesocket(sock); WSACleanup(); return -1; (3)、发送多播数据。 2、编译两个项目,在局域网中按如下步骤测试: (1)、将 Sender.exe 拷贝到发送多播数据的上。 (2)、将 Receiver.exe 拷贝到多个要求接收多播数据的上。 (3)、各自运行相应的程序。 (4)、在 Sender PC 上输入多播数据后,你就可以在 Receiver PC 上看到输入的多播数据。三、结果及结果分析三、结果及结果分析Sender:Receiver:Sender 与 receiver 只要绑定相同的多播组地址和端口号,sender 就可以向多个 receiver 发送信息,receiver 也可以接收多个 sender 发出的信息。在此只列出一个 sender 向 receiver 发送信息的情况。TracertTracert 与与 PingPing 程序设计与实现程序设计与实现一、一、 课程设计题目课程设计题目了解 Tracert 程序的实现原理,并调试通过。然后参考 Tracert 程序和教材 4.4.2 节,编写一个 Ping 程序,并能测试本局域网的所有机器是否在线,运行 Ping 程序。二、二、 课程设计内容课程设计内容实现原理实现原理Tracert 程序关键是对 IP 头部生存时间(time to live)TTL 字段的使用,程序实现时是向目地主机发送一个 ICMP 回显请求消息,初始时 TTL 等于 1,这样当该数据报抵达途中的第一个路由器时,TTL 的值就被减为 0,导致发生超时错误,因此该路由生成一份 ICMP 超时差错

      《湖南科技大学计算机网络课程设计报告》由会员ji****72分享,可在线阅读,更多相关《湖南科技大学计算机网络课程设计报告》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.