当我使用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响应?
答案 0 :(得分:2)
第一:UDP不是保证协议;消息完全有可能丢失并永久无法访问。
其次,仅仅因为你打电话给接收并不意味着你得到了一切。您需要继续接收和解析收到的数据,直到您碰巧使用的任何应用程序级协议(在您的示例中似乎没有一个)告诉您是时候停止接收和处理消息。