单播,组播,广播代码,以及广播,组播地址的计算
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Timers;
using System.Threading;
using System.Net.Sockets;
using System.Net;
namespace BCast
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ThreadHandle();
t.Elapsed += new ElapsedEventHandler(t_Elapsed);
t.AutoReset = true;
t.Enabled = true;
t.Start();
}
void t_Elapsed(object sender, ElapsedEventArgs e)
{
ClientSender();
}
Thread thread;
System.Timers.Timer t = new System.Timers.Timer(1000);
public void ThreadHandle()
{
thread = new Thread(new ThreadStart(ClientGeter));
thread.IsBackground = true;
thread.Start();
}
UdpClient udpgeter = new UdpClient(10881);
IPAddress iap = IPAddress.Parse(\"127.0.0.1\");
public void ClientGeter()
{
IPEndPoint iep = new IPEndPoint(iap, 10881);
//udpgeter.JoinMulticastGroup(multicastIP);
while (true)
{
byte[] b = udpgeter.Receive(ref iep);
string str = Encoding.UTF8.GetString(b);
Console.WriteLine(str);(看看控制台是否得到了你想要的数据)
}
}
UdpClient multicastUDP = new UdpClient();
组播的地址是保留的D类地址从224.0.0.0—239.255.255.255,而且一些地址有特定的用处如,224.0.0.0—244.0.0.255只能用于局域网中路由器是不会转发的,并且224.0.0.1是所有主机的地址,224.0.0.2所有路由器的地址,224.0.0.5所有ospf路由器的地址,224.0.13事PIMv2路由器的地址;239.0.0.0—239.255.255.255是私有地址(如192.168.x..x);224.0.1.0—238.255.255.255可以用与Internet上的。
//IPAddress multicastIP = IPAddress.Parse(\"224.110.10.1\");(组播)
所谓广播地址指同时向网上所有的主机发送报文,也就是说,不管物理网络特性如何,internet网支持广播传输。如136.78.255.255就是B类地址中的一个广播地址,你将信息送到此地址,就是将信息送给网络号为136.78的所有主机。
计算方法:首先计算网络地址=IP地址 逻辑与 子网掩码
先把IP,子网掩码转为2进制,然后进行逻辑与运算,得出网络地址
例:
IP 192.168.1.3 子网掩码 255.255.0.0
IP转二进制 11000000.10100100.00000001.00000011
子网掩码 11111111.11111111.00000000.00000000
与运算后 11000000.10100100.00000000.00000000
192.168.0.0这就是网络地址,计出来后把网络地址后面的0全部改为255就是广播地址了,那么此例中广播地址就为192.168.255.255
如果不会算的就在cmd中输入ipconfig,然后在计算机中用程序员模式计算就OK了
IPAddress multicastIP = IPAddress.Parse(\"192.168.1.255\");(广播)
int multicastPort = 10881;
public void ClientSender()
{
IPEndPoint multicastIep = new IPEndPoint(multicastIP, multicastPort);
multicastUDP.EnableBroadcast = true;
string info = string.Format(\" xxxxxxxxxxxxxxxxxxxxxxxxx\");
byte[] bInfo = Encoding.UTF8.GetBytes(info);
multicastUDP.Send(bInfo, bInfo.Length, multicastIep);
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容