4
我正在寫一個簡單的套接字客戶端,它只使用一個套接字。所以我想我可以重複使用一個SocketAsyncEventArgs進行所有接收操作。只要插座已連接,它就可以正常工作。當服務器斷開連接時,客戶端將在控制檯中輸入無限的接收循環垃圾郵件「接收成功」。重複使用SocketAsyncEventArgs與ReceiveAsync結果無限循環
不應該e.SocketError!= SocketError.Success在套接字斷開時爲true?
下面是部分代碼:
private void Completed(object sender, SocketAsyncEventArgs e)
{
if (e.SocketError != SocketError.Success)
status = 0;
System.Console.WriteLine(e.LastOperation + " " + e.SocketError);
if (status == 1)
{
switch (e.LastOperation)
{
case SocketAsyncOperation.Connect:
ProcessConnect(e);
break;
case SocketAsyncOperation.Receive:
ProcessReceive(e);
break;
case SocketAsyncOperation.Send:
ProcessSend(e);
break;
default:
status = 0;
break;
}
}
if (status != 1)
CloseSocket();
}
private void ProcessReceive(SocketAsyncEventArgs e)
{
if (!socket.ReceiveAsync(e))
Completed(null, e);
}
謝謝。這是一個簡單的解決方案,它解決了這個問題:) – remdao 2009-09-02 09:08:31
也許你可以'勾選'我的答案是正確的嗎? :) – 2009-09-03 00:57:26