计算机通信与网络实验指导

上传人:第*** 文档编号:33183326 上传时间:2018-02-14 格式:DOC 页数:7 大小:46.50KB
返回 下载 相关 举报
计算机通信与网络实验指导_第1页
第1页 / 共7页
计算机通信与网络实验指导_第2页
第2页 / 共7页
计算机通信与网络实验指导_第3页
第3页 / 共7页
计算机通信与网络实验指导_第4页
第4页 / 共7页
计算机通信与网络实验指导_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机通信与网络实验指导》由会员分享,可在线阅读,更多相关《计算机通信与网络实验指导(7页珍藏版)》请在金锄头文库上搜索。

1、计 算 机 通 信 与 网 络实 验 指 导 苏 州 大 学城市轨道交通学院WinSock 实验 1 数据报1 确定双方的角色 客户机/服务器2 找到本机的 IP 地址开始-程序-附件-命令提示符 -执行 ipconfig出现 IP Address: xxx.xxx.xxx.xxxSubnet Mask: xxx xxx xxx xxxDefault Gateway: xxx.xxx.xxx.xxx记录下 IP 地址3 记录下合作者的 IP 地址4 服务器端(1)打开 Microsoft Visual C+:文件 打开 Shujubaofuwu1.cpp;(2)阅读程序;(3)将函数 Star

2、tSock ()中ServerAddr.sin_addr.s_addr=inet_addr(“xxx.xxx.xxx.xxx”)填入本机 IP 地址(4)将函数 UdpRecv ()中 Client.sin_addr.s_addr=inet_addr(“xxx.xxx.xxx.xxx”)填入对方 IP 地址(5)编译并执行程序,正常出现“Waiting for Revc”5 客户端(1)打开 Microsoft Visual C+:文件 打开Shujubaokehu1.cpp(2)阅读程序(3)将函数 StartSock ()中ClientAddr.sin_addr.s_addr=inet_a

3、ddr(“xxx.xxx.xxx.xxx”)填入本机 IP 地址(4)将函数 UdpSend ()中 Server.sin_addr.s_addr=inet_addr(“xxx.xxx.xxx.xxx”)填入对方 IP 地址(5)编译程序,正常并执行程序,正常出现“输入信息:”(6)键入“xxxx”回车6 观察:服务器端应该显示接收到的内容。该内容被服务器端完整返回给客户端。客户端显示:“ 等待服务器响应 ”, “收到返回信息”以及相应的返回信息。7 理解程序:(1)在同 1 台计算机上运行客户机/服务器程序,有哪 2 种方法?修改 IP 地址,并运行。(2)双方修改 PORT 号,运行程序,

4、讨论结果。(3)双方修改 IP 号,运行程序,讨论结果。(4)客户端输入“EXIT”,给出现象,讨论如何结束程序。(5)检查 Socket() ,分析里面的参数。8. 双方交换执行程序。WinSock 实验 2 面向连接的会话通信1确定双方的角色 客户机/服务器2找到本机的 IP 地址开始程序 附件命令提示符执行 ipconfig出现 IP Address: xxx.xxx.xxx.xxxSubnet Mask: xxx xxx xxx xxxDefault Gateway: xxx.xxx.xxx.xxx记录下 IP 地址3记录下合作者的 IP 地址4服务器端(1)打开 Microsoft

5、Visual C+:文件 打开huihuafuwu.cpp(2)阅读程序(3)将函数 StartSock ()中ServerAddr.sin_addr.s_addr=inet_addr(“xxx.xxx.xxx.xxx”)填入本机 IP 地址(4)编译并执行程序,正常出现“Listening”5客户端(1)打开 Microsoft Visual C+:文件 打开huihuakehu.cpp(2)阅读程序(3)将函数 StartSock ()中ServerAddr.sin_addr.s_addr=inet_addr(“xxx.xxx.xxx.xxx”)填入对方 IP 地址(4)编译程序,正常并执

6、行程序,正常出现“Connect OK” “Press any key to send!” “Input the number of message to send: (0-exit)”(5)键入任意小于 50 的数字并回车6观察:客户端显示拟发送的数据个数。服务器端应该显示接收到的数据个数。7理解程序:(1)改变 IP/Port 地址,观察结果,讨论。(2)修改不存在的版本号 Makeword(0,0),结果如何?讨论。(3)在主程序中注释掉 StarSock( ),结果如何?讨论。(4) 在主程序中注释掉 CreatSocket( ),结果如何?讨论。(5) 为什么该会话通信程序中没有出现

7、客户端的 IP 地址?8双方交换执行程序。按照以上实验内容撰写实验报告。Winsock 实验 3 实现广播通信发送方:1. 创建数据报套接字,只有 SOCK_DGRAM 才支持广播通信。2. 绑定数据报套接字于指定的地址和接口。需要找到本机的 IP 地址,填充在 from.sin_addr.s_addr=inet_addr(“xx.xx.xx.xx”); 以及本地的通信端口。试问这个端口在实验中是如何定义的?3. 通过套接字选项设置数据报套接字的广播属性。在 setsockopt(SOCKET s, int level, int optname, const char FAR*optval,

8、int*optlen)其中,s: 标识套接字;Level: 选项定义层次,有 SOL_SOCKET/IPPROTO_TCP;Optname: 选项名 SO_BROADCAST(允许传送广播信息), SO_DONTROUTE(禁止选径,直接传送)等;Optval: 存放缓冲区指针;Optlen: 指向上述缓冲区长度的指针;4. 通过 sendto( )发广播信息,其中对方套接字为广播套接字,即对方的地址必须是 INADDR_BROADCAST,将其赋给 to.sin_addr.s_addr,对方的端口是什么?接收方:用数据报通信程序中的接收程序即可,此处使用 shujubaofuwu.cpp。可

9、以多个。验证及问题:1. 在同一网段的计算机只要运行广播接收程序,是否都可以收到广播信息?2. 接收广播信息,应该定义怎样的套接字?应该调用哪个接收函数?是否需要知道发送方的 IP 地址?是否需要知道自己一方的 IP 地址?3. 过度使用广播技术,会造成什么问题?Winsock 实验 4 实现多播通信1. 加入多播组。用 Socket 函数创建一个套接字,也必须是 DGRAM 类型。定义多播地址。如#define MCASTADDR 234.5.6.7dwMulticastGroup = inet_addr(MCASTADDR);2. 调用 setsockopt 函数,设置 PI ADDMEM

10、BERSHIP 选项,同时指定想加入的那个组的结构。if (setsockopt(sockM, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mcast, sizeof(mcast)=SOCKET_ERROR)printf(setsockopt(IP ADD_MEMBERSHIP) failed: %dn, WSAGetLastError();closesocket(sockM);WSACleanup();return(-1);local.sin_family=AF_INET;local.sin_addr.s_addr=dwInterface;/ local I

11、P addresslocal.sin_port= htons(MCASTR_PORT);/Receiver multi port3. IP 多播组的加入和离开都是用 setsockopt 完成 ,IP ADDMEMBERSHIP 是加入组, IP DROP_MEMBERSHIP 是脱离组。if (setsockopt(sockM, IPPROTO_IP,IP_DROP_MEMBERSHIP,(char*)&mcast, sizeof(mcast) = SOCKET_ERROR)printf(setsockopt(IP DROP_MEMBERSHIP) failed: %dn, WSAGetLastError();closesocket(sockM);WSACleanup();return(1);验证及问题:1.本实验中发送方有没有加入多播组?加入还是不加入有什么区别?2.多播地址有什么约定?尝试 224.0.0.2 是否可以?3.多播是否能够越过网段?如能够,需要哪些支持?按照以上实验内容撰写实验报告。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号