gpt4 book ai didi

c# - UDP 代码故障排除

转载 作者:行者123 更新时间:2023-11-30 03:56:42 25 4
gpt4 key购买 nike

我正在开发一个在网络上的对等点之间发送数据的系统。一个应用程序是用 Java 为 Android 编写的。另一个应用程序是在 PC 上用 C# 编写的。

我在 Android 上用 Java 编写代码来发送 UDP 数据报。我编写了 C# 代码来发送和接收数据报。我试图从 Android 向 PC 发送消息。我可以在 WireShark 中看到消息,但在我的程序中看不到。所以,我把我的程序放在第二台电脑上。我成功地从我的电脑向第二台电脑发送了一条消息。但是,当我试图从第二台 PC 向我的电脑发送一条消息时,它失败了。我可以在我的 PC 上的 WireShark 中看到它,但在我的应用程序中看不到它。我不知道接下来要尝试什么。你有什么建议吗?为什么 UDP 数据包在 WireShark 中可见,但在我的应用程序中不可见?

Here is my code.

//C# code on PC
//Sender
sending_socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, rotocolType.Udp);
send_to_address = IPAddress.Parse(strIPAddress);
sending_end_point = new IPEndPoint(send_to_address, intPort);
sending_socket.EnableBroadcast = true;
byte[] bytMessage = Encoding.ASCII.GetBytes(strMessage);
sending_socket.SendTo(bytMessage, sending_end_point);



//Listener
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
byte[] bytReceiveDataByteArray;
try
{
listener.EnableBroadcast = true;

while (isRunning)
{
//listen for data from sender
bytReceiveDataByteArray = listener.Receive(ref groupEP);
//Fire an event to send the data to the hosting code
if (DataReceived != null)
{
DataReceivedEventArgs e = new DataReceivedEventArgs(bytReceiveDataByteArray);
DataReceived(this, e);
}
}
}


//Java code on Android
DatagramSocket socket = new DatagramSocket();
InetAddress serverIP = InetAddress.getByName(strIpAddress);
byte[] outData = (strMsg).getBytes();
DatagramPacket out = new DatagramPacket(outData,outData.length, serverIP,50005);
socket.send(out);
socket.close();

谢谢,

迈克

最佳答案

如果我理解当您的程序在特定 PC(我们称之为“Windows1”)上运行时问题正确,它永远不会收到 UDP 数据包。它不会从 Java Android 或在不同 PC 上运行的 C# 代码接收它们(我们称之为“Windows2”)。

然而,当您在“Windows2”上运行您的程序时,它确实会收到来自“Windows1”的消息。听起来你在“Windows1”上启用了防火墙并且 UDP 端口 50005 没有异常(exception)。在“Windows2”上你的防火墙被关闭或者有 50005 的异常(exception),这就是它从“Windows1”接收消息的原因。

请注意,由于 UDP 不是面向连接的,因此防火墙错误不会导致通常的连接超时错误。消息刚刚被丢弃,您永远不会收到错误。

关于c# - UDP 代码故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224456/

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