Sim*_*mon 11 .net c# messaging networking
我试图在我的本地网络上进行一些简单的UDP通信.
我想要做的就是对网络上的所有机器进行多播
这是我的发送代码
public void SendMessage(string message)
{
var data = Encoding.Default.GetBytes(message);
using (var udpClient = new UdpClient(AddressFamily.InterNetwork))
{
var address = IPAddress.Parse("224.100.0.1");
var ipEndPoint = new IPEndPoint(address, 8088);
udpClient.JoinMulticastGroup(address);
udpClient.Send(data, data.Length, ipEndPoint);
udpClient.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的接收代码
public void Start()
{
udpClient = new UdpClient(8088);
udpClient.JoinMulticastGroup(IPAddress.Parse("224.100.0.1"), 50);
receiveThread = new Thread(Receive);
receiveThread.Start();
}
public void Receive()
{
while (true)
{
var ipEndPoint = new IPEndPoint(IPAddress.Any, 0);
var data = udpClient.Receive(ref ipEndPoint);
Message = Encoding.Default.GetString(data);
// Raise the AfterReceive event
if (AfterReceive != null)
{
AfterReceive(this, new EventArgs());
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在我的本地计算机上运行良好,但不能通过网络运行.
- 似乎不是防火墙.我在两台机器上都禁用了它,但它仍然无效.
- 如果我直接发送到客户端机器的硬编码IP地址(即不是多播),它可以工作.
任何帮助,将不胜感激.
我刚刚花了 4 个小时做类似的事情(我认为),对我来说解决方案是:
client.Client.Bind(new IPEndPoint(IPAddress.Any, SSDP_PORT));
client.JoinMulticastGroup(SSDP_IP,IP.ExternalIPAddresses.First());
client.MulticastLoopback = true;
Run Code Online (Sandbox Code Playgroud)
在多播组上使用特定(第一个外部)IP 地址。
| 归档时间: |
|
| 查看次数: |
22205 次 |
| 最近记录: |