我有一個小問題和一個解決方案,但是我想了解到底發生了什麼。 根據UdpClient的構造函數,我使用EndReceive()是否拋出一個Socket Exeption(10054-現有連接被遠程主機關閉(從德語翻譯))UdpClient。()vs UdpClient(port)
感謝您的任何提示! 文森特
private UdpClient udpClient;
void recv(IAsyncResult res)
{
IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);
byte[] data = udpClient.EndReceive(res, ref remote); // code stops here in debug
// do something with data received from remote
udpClient.BeginReceive(new AsyncCallback(recv), null);
}
private void Form1_Load(object sender, EventArgs e)
{
//udpClient = new UdpClient(); // will throw exception
udpClient = new UdpClient(8000); // will not throw exception
udpClient.Connect("127.0.0.1", 8000);
udpClient.BeginReceive(new AsyncCallback(recv), null);
}
private void button1_Click(object sender, EventArgs e)
{
udpClient.Send(Encoding.ASCII.GetBytes("Hallo"), 5);
}
你究竟在哪裏得到異常?在'BeginReceive'調用?我已經嘗試過你的示例,並且可以毫無例外地啓動它 – Jan
不,代碼在EndReceive處停止,你是否改變了form1_load中使用的構造函數?我發佈了工作代碼,所以對於錯誤你必須改變它 – Vincent