使用UdpClient广播和接收消息

时间:2014-02-13 20:11:36

标签: c# sockets udp udpclient

我正在玩广播和接收UDP消息。 我有一个客户端和服务器在我的机器上运行正常,但无法跨机器连接。

我的服务器发送消息,我的客户端收到消息。 我在两台机器上都打开了防火墙,这不是问题所在。

服务器看起来像:

var udpclient = new UdpClient();

IPAddress multicastAddress = IPAddress.Parse("239.0.0.222");
udpclient.JoinMulticastGroup(multicastAddress);
var endPoint = new IPEndPoint(multicastAddress, 2222);

while(true)
{
    Byte[] buffer = Encoding.Unicode.GetBytes(Dns.GetHostName());
    udpclient.Send(buffer, buffer.Length, endPoint);

    Console.WriteLine("Broadcasting server hostname: {0}", Dns.GetHostName());
    Thread.Sleep(3000);
}

客户端看起来像:

var client = new UdpClient { ExclusiveAddressUse = false };

var ipEndPoint = new IPEndPoint(IPAddress.Any, 2222);

client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
client.ExclusiveAddressUse = false;

client.Client.Bind(ipEndPoint);

IPAddress multicastaddress = IPAddress.Parse("239.0.0.222");
client.JoinMulticastGroup(multicastaddress);

Byte[] data = client.Receive(ref ipEndPoint);
string strData = Encoding.Unicode.GetString(data);
Console.WriteLine("Received hostname {0} from the server", strData);

Console.WriteLine("I'm done. Press any key to close me.");
Console.ReadLine();

我认为问题不在代码中,而是与网络相关。 关于如何检查问题的任何想法?提前谢谢

1 个答案:

答案 0 :(得分:-2)

尝试将它们连接到同一网络,例如wifi网络。注意:每次连接到不同的网络时,IP地址都会发生变化。