gpt4 book ai didi

c# - 为什么 UDPclient 多播不工作?

转载 作者:行者123 更新时间:2023-11-30 18:02:48 25 4
gpt4 key购买 nike

public void send_multicast(string message)
{
UdpClient c = new UdpClient(10102);
Byte[] sendBytes = Encoding.ASCII.GetBytes(message);
IPAddress m_GrpAddr = IPAddress.Parse("224.0.0.1");
IPEndPoint ep = new IPEndPoint(m_GrpAddr,10102);
c.MulticastLoopback=true;
c.JoinMulticastGroup(m_GrpAddr);
c.Send(sendBytes,sendBytes.Length,ep);
Console.WriteLine(message);
}

public string recv_multicast()
{
Console.WriteLine("was here");
String strData = "";
//String Ret = "";
ASCIIEncoding ASCII = new ASCIIEncoding();
UdpClient c = new UdpClient(10101);

// Establish the communication endpoint.
IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 10101);
IPAddress m_GrpAddr = IPAddress.Parse("224.0.0.1");

c.JoinMulticastGroup(m_GrpAddr);
Byte[] data = c.Receive(ref endpoint);
strData = ASCII.GetString(data);
//Ret += strData + "\n";

return strData;
}

端口有什么问题吗?

recv 方法被阻止但未收到消息?

在 wireshark 中,我可以看到从本地地址端口 10102 到 224.0.0.1 dest_port 0 的消息,但是 recv 没有从多播地址获取消息。

顺便说一句,我在同一台计算机上运行这两个实例。引用:http://msdn.microsoft.com/en-us/library/ekd1t784.aspx

**得到解决方案:在发送例程中

IPEndPoint ep = new IPEndPoint(m_GrpAddr,10102); 

应该是

IPEndPoint ep = new IPEndPoint(m_GrpAddr,10101);

收货港**

最佳答案

您需要开启多播环回才能接收到您自己发送的数据包。

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.multicastloopback.aspx

您应该在服务器端和客户端使用 JoinMulticastGroup。如果失败,您还可以尝试使用 Wireshark(google it)查看数据包是否实际发送。

关于c# - 为什么 UDPclient 多播不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com