void recvMsgs() { int len = 0; try { len = m_socket.Receive(m_recvBuf, 0, kBufferSize, SocketFlags.None); } catch (SocketException ex) { if (m_socket.Connected == false) { Debug.Log("Disconnected from server!!"); m_curState = State.DISCONNECTED; DisConnectedEventArgs arg = new DisConnectedEventArgs(); arg.eErrorCode = EConnectError.eCE_LoseConnect; if (OnDisConnected != null) { OnDisConnected(this, arg); } } if (ex.SocketErrorCode != SocketError.NoData && ex.SocketErrorCode != SocketError.WouldBlock) { Debug.LogError(ex); Debug.LogErrorFormat("ErrorCode:{0}", ex.SocketErrorCode); } return; } if (m_recvPool.WriteSize < len) { Debug.LogError("Too much messages, disconnected from server!!"); if (m_curState != State.DISCONNECTED) { shutDown(); DisConnectedEventArgs arg = new DisConnectedEventArgs(); arg.eErrorCode = EConnectError.eCE_LoseConnect; OnDisConnected(this, arg); } return; } m_recvPool.PushData(m_recvBuf, 0, len); }
public void doUpdate() { if (m_curState == State.CONNECT_FAILED) { m_curState = State.DISCONNECTED; DisConnectedEventArgs arg = new DisConnectedEventArgs(); arg.eErrorCode = EConnectError.eCE_LoseConnect; if (OnDisConnected != null) { OnDisConnected(this, arg); } } else if (m_curState == State.CONNECTED) { m_socket.Blocking = false; sendAllMsgs(); recvMsgs(); dispatchMsgs(); } }
void OnDisConnected(object sender, DisConnectedEventArgs e) { connected = false; }