我有一個簡單的UDP偵聽器,我試圖從中收集數據報。我的數據報可以是兩種數據格式之一。使用第一種數據格式,我按照預期在我的程序中接收數據。第二,絕對沒有跡象表明數據是從我的程序收到的,儘管我可以通過Wireshark驗證UDP數據是否傳遞到網絡接口。我認爲這些可能是Windows拒絕的畸形UDP數據包,但Wireshark確實將它們標記爲UDP。我的代碼如下:.NET UDP數據接收
static void Main(string[] args)
{
Thread thdUdpServer = new Thread(new ThreadStart(serverThread));
thdUdpServer.Start();
}
static void serverThread()
{
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket.Bind(new IPEndPoint(new IPAddress(0), 2000));
while (true)
{
byte[] responseData = new byte[128];
socket.Receive(responseData);
string returnData = Encoding.ASCII.GetString(responseData);
Console.WriteLine(DateTime.Now + " " + returnData);
}
丟失的數據包都是29字節的數據報,看起來像這樣(轉換爲ASCII)。
#01RdFFFF...?...... ........F
爲什麼Wireshark會顯示它們的存在,但.NET似乎沒有看到它們?
爲了澄清,我試圖用返回的數據打印DateTime.Now,但仍然沒有看到任何東西。 – kittyhawk
29字節數據報包含什麼?你能發佈前幾個字節嗎? – HyperDev
我在原帖中添加了數據報的例子。 – kittyhawk