欢迎来到天天文库
浏览记录
ID:51862639
大小:63.73 KB
页数:3页
时间:2020-03-17
《实验指导书3局域网广播.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验指导书3局域网广播 实验指导书3 一、实验名称局域网广播 二、实验内容局域网广播是UDP的应用之一。 UDP协议与TCP协议同样是基于IP协议的,但与TCP不同的是它不需要协议层提供质量保证,因此,UDP在很多需要实时数据传输的情况下比较常用。 此外,由于不提供质量保证,服务器没有必要一直处于等待状态,这样就大大减轻了服务器的负担。 本实验的内容如下1.编制一个程序对所在的局域网的计算机进行广播;2.当消息发出后该网段的计算机全部都能收到该消息;3.熟悉WindowsAPI函数的调用。
2、三、实验要求1.能熟练地应用学过的知识,完成程序的编写;2.掌握UDP协议的具体应用;3.写出详细的实验报告和体会。 四、实验步骤局域网广播实验的一般步骤如下 1、学习局域网广播的相关知识,准备开发广播程序的相关工具; 2、编写广播发送端和广播接收端程序; 3、利用第二步所编写的程序在某一网段内进行广播测试。 实验的重点在于第二步广播发送端和接收端程序的实现,下面以VisualC++6.0代码为例介绍使用Winsock实现广播的一般步骤。 1、发送广播端实现广播发送的一般步骤如下 (1)创建
3、一个数据报套接字SOCK_DGRAM。 在Winsock套接字中,只有数据报套接字才支持广播。 MFC示例代码如下//初始化套接字BOOLoptval=TRUE;SOCKADDR_INin;//创建if((m_socket=socket(AF_INET,SOCK_DGRAM,0))==INVALID_SOCKET){TRACE("Failedtocreatesocket");returnFALSE;1} (2)绑定数据报套接字于指定的地址和端口。 MFC示例代码如下in.sin_family=AF
4、_INET;in.sin_addr.S_un.S_addr=INADDR_ANY;in.sin_port=htons(PORT);//绑定if(bind(m_socket,(LPSOCKADDR)&in,sizeof(in))==SOCKET_ERROR){TRACE("bindfailed");closesocket(m_socket);returnFALSE;} (3)通过建设套接字选项(setsockopt()函数)设置数据报套接字的广播属性。 MFC示例代码如下//设置套接字if(setsoc
5、kopt(m_socket,SOL_SOCKET,SO_BROADCAST,(char*)&optval,sizeof(optval))==SOCKET_ERROR){TRACE("setsocketoptfailed");closesocket(m_socket);returnFALSE;} (4)通过sendto()函数发送广播消息。 MFC示例代码如下SOCKADDR_INsinTo;//destinationsinTo.sin_family=AF_INET;sinTo.sin_addr.S_u
6、n.S_addr=INADDR_BROADCAST;sinTo.sin_port=htons(PORT);//发送广播if(sendto(m_socket,(char*)(LPSTR)(LPCTSTR)szContent,{AfxMessageBox(_T("广播失败"));m_cBContent.SetReadOnly(FALSE);m_cBContent.SetFocus();return;2szContent.GetLength(),0,(LPSOCKADDR)&sinTo,sizeof(sinTo
7、))==SOCKET_ERROR)} 2、广播接收端使用recvfrom()函数来接收广播。 MFC示例代码如下SOCKADDR_INsinFrom;intfromlen=sizeof(SOCKADDR);intret;TCHARcaBuffer[BUFSIZE]=_T("");CStringstr;while (1){}for(inti=0;im_socket,(char*)&caBuffer,BUFSIZE,0,if(ret==SOCKET_ERROR)以上是实现局域网广播程序的主要步骤和核心代
8、码。 程序编写结束后,实验进入第三个步骤,需要在某一个局域网网段进行广播测试。 测试结果应该是该网段中所有运行广播接收程序的主机都能接收广播发送端所发送的广播信息。 3。 内容仅供参考
此文档下载收益归作者所有