protected virtual void ReceiveData(IAsyncResult iar) { Socket client = (Socket)iar.AsyncState; try { if (_isClose) { return; } int recv = client.EndReceive(iar); if (recv > 0) //接收到数据 { agree.NoWait(); if (ReceiveOriginalData != null) { try { ReceiveOriginalData(_recvDataBuffer, recv); } catch { } } } //继续接收来自来客户端的数据 if (!client.Connected) { this.Close(); return; } client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None, new AsyncCallback(ReceiveData), client); } catch (ObjectDisposedException ex) { OnError(this, ex.Message); _isClose = true; } catch (InvalidOperationException ex) { OnError(this, ex.Message); } catch (SocketException) { if (HandlerClose != null) { int hd = this._HandlerID; HandlerClose(this, hd); } this.Close(); } catch (Exception ex) { OnError(this, ex.Message); } }