/// <summary> /// 处理发送数据 /// </summary> /// <param name="sendSocketAsyncEventArgs"></param> private void ProcessSend(SocketAsyncEventArgs sendSocketAsyncEventArgs) { if (sendSocketAsyncEventArgs.SocketError == SocketError.Success) { DataHolder dataHolder = sendSocketAsyncEventArgs.UserToken as DataHolder; switch (dataHolder.SendStatus) { case SocketProcessStatus.UnComplete: StartSend(sendSocketAsyncEventArgs); break; case SocketProcessStatus.Completed: CloseClientSocket(sendSocketAsyncEventArgs); break; } } else { CloseClientSocket(sendSocketAsyncEventArgs); } }
/// <summary> /// 处理接收数据 /// </summary> /// <param name="receiveSocketAsyncEventArgs"></param> private void ProcessReceive(SocketAsyncEventArgs receiveSocketAsyncEventArgs) { if (receiveSocketAsyncEventArgs.SocketError == SocketError.Success && receiveSocketAsyncEventArgs.BytesTransferred > 0) { DataHolder dataHolder = receiveSocketAsyncEventArgs.UserToken as DataHolder; SocketProcessStatus socketProcessStatus = dataHolder.Receive(receiveSocketAsyncEventArgs); switch (socketProcessStatus) { case SocketProcessStatus.UnComplete: StartReceive(receiveSocketAsyncEventArgs); break; case SocketProcessStatus.Completed: if (dataHolder.HandleMessage()) { //处理数据成功 StartSend(receiveSocketAsyncEventArgs); } else { //处理数据异常 CloseClientSocket(receiveSocketAsyncEventArgs); } break; case SocketProcessStatus.Exception: CloseClientSocket(receiveSocketAsyncEventArgs); break; } } else { CloseClientSocket(receiveSocketAsyncEventArgs); } }