【发布时间】:2014-02-13 20:11:35
【问题描述】:
我正在玩弄广播和接收 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();
我认为问题不在于代码,而在于网络。 关于如何检查问题的任何想法?提前谢谢你
【问题讨论】:
-
先尝试建立 TCP 连接,看看能否让他们互相交谈。 UDP 是一种无连接协议,不保证消息会到达目的地。
-
我的想法是在不知道彼此的情况下连接服务器和客户端。服务器通过 Udp 广播其 IP,客户端拾取该 IP 并与服务器建立 tcp 连接。但是我可以试试TCP,只是为了测试。感谢您的回复。