0

当我使用 netcat 发送 udp 查询时,我得到了完整的响应。当我在 c# 中使用 UDPCLIENT 类时,我没有收到完整的响应,它被缩短了。这是我的代码

byte[] data = new byte[1024];
            string stringData;

            UdpClient server = new UdpClient(currentIP, currentport);

            IPEndPoint send = new IPEndPoint(IPAddress.Any, 0);

            string query = "\\players\\";
            data = Encoding.ASCII.GetBytes(query);
            server.Send(data, data.Length);

            data = server.Receive(ref send);


            stringData = Encoding.ASCII.GetString(data, 0, data.Length);

            MessageBox.Show(stringData);

如何增加接收缓冲区以存储完整的 UDP 响应?

4

1 回答 1

2

第一:UDP不是保证协议;消息完全有可能丢失并且永久无法访问。

其次,仅仅因为你调用了 receive 并不意味着你得到了一切。您需要继续接收和解析接收到的数据,直到您碰巧使用的任何应用程序级协议(在您的示例中似乎没有)告诉您是时候停止接收和处理消息了。

于 2010-09-09T23:58:54.137 回答