《计算机网络课程设计报告--局域网广播系统.docx》由会员分享,可在线阅读,更多相关《计算机网络课程设计报告--局域网广播系统.docx(12页珍藏版)》请在第一文库网上搜索。
1、计算机网络课程设计报告题目:局域网广播系统一、问题描述局域网广播系统可实现服务器端向客户端广播信息,还可获取本地IP或远程客户机的IP和MAC地址功能要求实现一个局域网环境下的文件的广播以及接收系统:一行一行读取文件然后广播,同一子网掩码下的的用户都可以接收并查看二、概要设计服务器端:实例化一个SOCket(套接字)对象,用来发送广播信息定义了一个获得主机IP地址和MAC地址的方法类:1、用到C#SySten1.Management的命名空间2、用到一个套接字类方法:构造方法Socket(AddrcssFanii1y.InterNetwork,SockctType.Dgram,Protoco1
2、Typc.Udp)发送数据方法:SendTo(bytess,ieps);)基本套接字为了更好说明套接字编程原理,给出几个基本的套接字:1、创建套接字一一SocketO功能:使用前创建一个新的套接字2、指定本地地址bind()功能:将套接字地址与所创建的套接字号联系起来。其它:没有错误,bind()返回0,否则SOCKET_ERROR地址结构说明:3、建立套接字连接connect()和accept()功能:共同完成连接工作4监听连接IistenO功能:用于面向连接服务器,表明它愿意接收连接。三、详细设计(主要算法和函数间的调用关系)1、设计思想整个系统分为广播发送端和接收端,发送端发送数据信息到
3、多播组。接受端可以选择接收与不接收,服务器端是信息的中心。服务器端可以打开指定的文件,通过定时器不断发送信息,同时可以自己显示正在发送和己发送的信息。客户端则可以选择接收和停止接收,同时显示接收到的内容。本课程设计按照系统的具体功能要求,首先应用SoCkCt编程创建客户端和服务器端,每个接收端就会相应的创建一个线程,它们之间通过这个连接来实现数据通信;然后在发送端和接收端设置一个监听器,用于监听发出的消息。并根据消息做出不同的动作。系统功能该系统实现了局域网内部的信息广播,同一子网掩码下的用户都可以接收并查看。发送端发送的信息。发送端可以开始发送和停止发送,接收端也可以接收和停止接收,两端都可
4、以显示发送的信息。系统架构(1)选择用户数据报协议UDP,使用VC的SOCket编程机制,分别建立发送端与接收端,自己可以设定主机的地址。(2)分别设计发送端与接收器端的界面,并使用MFC程序用户界面的开发工具包Swing进行窗体界面的布局,以及实现部分窗口事件的相应。2、模块设计(1) 广播发送端:主要实现向各个接收端发布广播消息。1、选择要发送的文件:可以选择路径。2、发送信息:运用多播数据报套接字类用于发送和接收IP多播包。3、显示消息:显示发送的内容和已发送的内容。(2) 客户端:主要实现接收发送端发送的消息,和发送端一样可以显示已接收的信息内容。和接受端得一个重要的区别在于它不需要打
5、开一个文件,代码要简单一点。3、详细设计与实现(流程图)图1设计流程图FormusingSystem;usingSystem.Co11ections.Generic;usingSystem.ConiponentMode1;usingSystem.Data;usingSystem.Drawing;usingSystem.1inq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Net.Sockets;usingSystem.Net;namespace1ANBroadcast(pub1icpartia1c1assForm1:Form(p
6、ub1icForm1()(Initia1izeComponent();)privatevoid1abe1IC1ick(objectsender,EventArgse)()privatevoidForm11oad(objectsender,EventArgse)()privatevoidbutton1C1ick(objectsender,EventArgse)(使用UDP发送数据newSocketsocket=Socket(AddressFami1y.InterNetwork,SockctType.Dgram,Protoco1Type.Udp);IPEndPointieps=newIPEndPo
7、int(IPAddress.Broadcast,8900);设置端口号socket.SetSockctOption(SocketOption1eve1.Socket,SocketOptionNamc.Broadcast,1);将发送的数据转换为字节数组bytebytessSystem.Text.Encoding.Unicode.GctBytes(riChTextBox1.Text);socket.SendTo(bytess,ieps);socket.C1ose();)frmN,1ainusingSystem;usingSystem.Co11ections.Generic;usingSystem
8、.ConiponentMode1;usingSystem.Data;usingSystem.Drawing;usingSystem.1inq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Not.Sockets;usingSystem.Net;namespace1ANBroadcastpub1icpartia1c1assfrmMain:Form(pub1icfrmMain()(Initia1izcComponent();)privatevoidIabe11C1ick(objectsender,EventArgse)()privat
9、evoidForm11oad(objectsender,EventArgse)()privatevoidbutton1C1ick(objectsender,EventArgse)(使用UDP发送数据newSocketsocket=Socket(AddressFami1y.InterNetwork,SockctType.Dgram,Protoco1Type.Udp);IPEndPointieps=newIPEndPoint(IPAddress.Broadcast,8900);设置端口号socket.SetSocketOption(SocketOption1eve1.Socket,SocketOp
10、tionName.Broadcast,1);将发送的数据转换为字节数组bytebytess=System.Text.Encoding.Unicode.GetBytes(richTextBox1.Text);socket.SendTo(bytess,ieps);socket.C1ose();)privatevoidbutton2_C1ick_1(objectsender,EventArgse)(richTcxtBox1.Text=;)privatevoid获得本地信息TOO1StriPMenUItCmCIiCk(ObjeCtsender,EventArgse)()privatevoid获取Too
11、IStriPMCnU1tenIc1iCk(ObjeCtsender,EvcntArgse)()privatevoid获取本机IP地址Too1StripMenu11em_C1ick(objectsender,EventArgse)(getIPMACAdressIpAdress=newgetIPMACAdress();System.Net.IPAddressfaddress1ist=IpAdress.get1oca1IP();foreach(IPAddressipinaddress1ist)(MessageBox.ShOW(IP地址为:+ip.ToString();)privatevoid获取本机
12、MAC地址ToO1StriPMenU1teInC1iCk(ObjCCtsender,EventArgse)(getIPMACAdressIpAdress=newgetIPMACAdress();stringmacAdress=IpAdress.get1oca1Mac();MCSSagCBOX.Show(该主机的MAC地址为:+macAdress);privatevoid获取IP地址Too1StripMenuItemC1ick(objectsender,EventArgse)()privatevoid获得TooIStriPMCnU1tenIc1iCk(ObjeCtsender,EvcntArgs
13、e)(RemotIPRemotIP=newRemotIP();RemotIP.Show();)usingSystem;usingSystem.Co11ections.Generic;usingSystem.1inq;usingSystem.Text;usingSystem.Net;usingSystem.Management;usingSystem.Runtime.InteropServices;namespace1ANBroadcast(c1assge11PMACAc1ress(pub1icSystem.Net.IPAddressget1oca1IP()(stringStrHostName=
14、Dns.GetHostNameO;得到本机的主机名System.Net.IPAddressfaddress1ist=Dns.GetHostAddresses(strHostName);/IPHostEntryipEntry=Dns.GetHostEntry(StrHostName);/取得本机IP/stringStrAddr=ipEntry.Address1istfO.ToStringO;returnaddress1ist;)pub1icstringget1oca1Mac()stringmac=nu11;ManagcmentObjectSearcher(,SE1ECT*FROMWin32_Ne
15、tworkAdapterConfiguration*);ManagomentobjectCo11ectionqueryCo1Iection=query.Get();foreach(ManagcmentObjectmoinqueryCo11ection)(if(mozfIPEnab1ed*.ToStringO=True)mac=InoMacAddress.ToStringO;)return(mac);)获取远程主机IPpub1icstringgetRemoteIP(stringRcmoteHostName)(IPHostEntryipEntry=Dns.GetHostEntry(RemotcHostName);IPAddressIpAddr=ipEntry.Address1ist;stringStrAddr=new