none
奇怪的 SocketAsyncOperation.Receive 重复触发现象 RRS feed

  • 问题

  •         void RSaea_Completed(object sender, SocketAsyncEventArgs e)
            {
                switch (e.LastOperation)
                {
                    case SocketAsyncOperation.Receive:
                        ProcessReceive();
                        break;
                }
            }

    ProcessReceive 里判断接收的字节数是否为0,是就执行关闭此Socket连接的代码。但奇怪的现象是,在模拟连接和关闭连接的测试中,前3次测试均正常,后面就会出现在客户端执行 1 次关闭连接后,服务器端的SocketAsyncOperation.Receive 状态会出现 2 次触发的情况。为什么会这样。客户端的Socket是使用BeginConnect连接,关闭连接是使用Socket.Close()。

    2013年5月6日 5:36

全部回复