//�ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ����ݽ��ջص� private void ReceiveCallback(IAsyncResult ar) { try { // SocketStateObject state = ar.AsyncState as SocketStateObject; //��ȡ���� int bytesRead = m_socket.EndReceive(ar); if (bytesRead > 0) { if (!m_blChatMode) { //�ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ����ֻص�ģʽ if (onStreamData != null) { onStreamData(m_socket, this, state.buffer); } } else { state.tempString.Append(UTF8Encoding.UTF8.GetString(state.buffer, 0, bytesRead)); string str = state.tempString.ToString(); if (str.Substring(str.Length - 1, 1) == NetConfig.EndChar) { if (onStringData != null) { onStringData(m_socket, this, str); } } } //�ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ�һ�ֽ�����ϱ�������״̬ state = new SocketStateObject(m_socket); m_socket.BeginReceive(state.buffer, 0, SocketStateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } } catch (SocketException se) { //ErrorBox.Show(se,"socketError"); if (onClosed != null) onClosed(this, se.Message); } catch (Exception ex) { //ErrorBox.Show(ex , "socketError"); if (onClosed != null) onClosed(this, ex.Message); } }
//�ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ����ݽ��պ��� public void BeginReceive() { if (m_socket == null) { return; } //��ʼ�������� SocketStateObject state = new SocketStateObject(m_socket); m_socket.BeginReceive(state.buffer, 0, SocketStateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); }