.NET 简单实现广播
代码
class Program
{
static bool connecting = true;
static void Main()
{
Received();
while (connecting)
{
string content = Console.ReadLine();
if (content.Length > 0)
{
if (string.Compare(content, "<Stop>", true) == 0)
{
Console.WriteLine("关闭...");
connecting = false;
}
else
{
Send(content);
}
}
}
Console.ReadKey();
}
public static void Send(string content)
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//255.255.255.255
IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.100.255"), 9050);
// string hostname = Dns.GetHostName();
byte[] data = Encoding.ASCII.GetBytes(content);
sock.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.Broadcast, 1);
//sock.SendTo(data, iep1);
sock.SendTo(data, iep2);
sock.Close();
}
public static void Received()
{
ThreadPool.QueueUserWorkItem((x) =>
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
byte[] data;
int recv;
string stringData;
Console.WriteLine("接听开启...");
while (connecting)
{
data = new byte[1024];
recv = sock.ReceiveFrom(data, ref ep);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("信息: {0} 来自: {1}", stringData, ep.ToString());
}
Console.WriteLine("接听关闭...");
sock.Close();
});
}
}
{
static bool connecting = true;
static void Main()
{
Received();
while (connecting)
{
string content = Console.ReadLine();
if (content.Length > 0)
{
if (string.Compare(content, "<Stop>", true) == 0)
{
Console.WriteLine("关闭...");
connecting = false;
}
else
{
Send(content);
}
}
}
Console.ReadKey();
}
public static void Send(string content)
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//IPEndPoint iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//255.255.255.255
IPEndPoint iep2 = new IPEndPoint(IPAddress.Parse("192.168.100.255"), 9050);
// string hostname = Dns.GetHostName();
byte[] data = Encoding.ASCII.GetBytes(content);
sock.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.Broadcast, 1);
//sock.SendTo(data, iep1);
sock.SendTo(data, iep2);
sock.Close();
}
public static void Received()
{
ThreadPool.QueueUserWorkItem((x) =>
{
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
byte[] data;
int recv;
string stringData;
Console.WriteLine("接听开启...");
while (connecting)
{
data = new byte[1024];
recv = sock.ReceiveFrom(data, ref ep);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("信息: {0} 来自: {1}", stringData, ep.ToString());
}
Console.WriteLine("接听关闭...");
sock.Close();
});
}
}