嘿,所有。我有一個與C#問題,它很可能可能是調試器,但我相當新的C#(不是新的C/C++)C#在新創建的套接字上丟棄UDP數據包
有下面的代碼。這是我遇到的問題。
我得到UDP,沒有保證傳遞,當然。我希望偶爾的數據包丟在網絡上,或者如果我把管道塞滿了,就用windows。但是,我遇到的問題是,在創建一個新的套接字後,我嘗試發送一個包含1個字節數據的數據包。這個數據包被丟棄。我可以嘗試併發送兩次,這兩次都會丟失。但是,如果我發送1k價值的數據,它就會通過。如果我創建另一個套接字(通過再次單擊該按鈕),一切工作正常。現在這是奇怪的事情。如果我停止並重新啓動調試項目而不對源進行任何更改,則我的所有數據包都會毫無問題地發送。它似乎只在項目建成後的第一次運行中發生。無論如何,這是重現問題的代碼。經過幾個小時的搜索和閱讀,我不知所措。 編輯:想澄清我正在使用wireshark並可以看到數據包被丟棄。
private void button1_Click(object sender, EventArgs e)
{
byte[] a = new byte[1] {0x00};
byte[] b = new byte[1024];
for(int i = 0; i < 1024; i++)
{
b[i] = 0xFF;
}
IPEndPoint _ipep = new IPEndPoint(IPAddress.Parse("192.168.200.202"),5546);
Socket _server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
_server.SendTo(a, 1, SocketFlags.None, _ipep);
_server.SendTo(a, 1, SocketFlags.None, _ipep);
_server.SendTo(b, 1024, SocketFlags.None, _ipep);
}
你能分享收到的代碼嗎? – 2011-04-28 20:44:29
我沒有看到發佈接收代碼的相關性。它是用arm處理器寫在c上的。我可以用wireshark看到一切。 – Jason 2011-04-28 21:28:06
我上面發佈的代碼將允許您在如此傾向的情況下重新創建問題。 – Jason 2011-04-28 21:53:58