private void SendPto(ref Network.PtoBase data) { if (m_State != EnNetState.Connected) { return; } m_Client.Write(ref data); }
public bool Reader_s2c_login_error(ref BinaryReader br, out Network.PtoBase data) { T_s2c_login_error t = new T_s2c_login_error(); t._name = "s2c_login_error"; data = t; return(t.Read(ref br)); }
public bool Reader_c2s_login_version(ref BinaryReader br, out Network.PtoBase data) { T_c2s_login_version t = new T_c2s_login_version(); t._name = "c2s_login_version"; data = t; return(t.Read(ref br)); }
public bool Write(ref Network.PtoBase data) { if (!IsConnected()) { return(false); } m_Writer.Seek(0, SeekOrigin.Begin); bool ret = m_Net.WritePacket(ref data, ref m_Writer); if (!ret) { return(false); } m_Socket.BeginSend(m_WriteBuffer, 0, (int)(m_Writer.BaseStream.Position), SocketFlags.None, SendCallBack, m_Socket); //m_Socket.Send(m_WriteBuffer, 0, (int)m_Writer.BaseStream.Position, SocketFlags.None); return(true); }
public void MainLoop() { if (m_ReadQueue.Count <= 0) { return; } Network.PtoBase pack = null; for (int i = 0; i < Network.READ_PACKET_PER_FRAME; i++) { if (m_ReadQueue.Count <= 0) { break; } pack = m_ReadQueue.Dequeue(); if (pack == null) { break; } m_Net.HandlePacket(ref pack); } }
void ReceiveCallBack(IAsyncResult ar) { try { int size = m_Socket.EndReceive(ar); m_ReadSize += size; // 分包 ushort len = 0; ushort pos = 0; while (size >= Network.PACKET_LEN_MIN) { // 先读取2字节的包体长度 len = System.BitConverter.ToUInt16(m_ReadBuffer, pos); if (len > m_ReadSize - Network.PACKET_HEAD) { // 包体不完整,等待完整后读取 break; } pos += 2; m_Reader.Read(m_ReadBuffer, pos, len); Network.PtoBase pack = m_Net.ReadPacket(ref m_Reader); pos += len; m_ReadQueue.Enqueue(pack); } if (pos > 0) { Buffer.BlockCopy(m_ReadBuffer, pos, m_ReadBuffer, 0, m_ReadSize - pos); m_ReadSize -= pos; } m_Socket.BeginReceive(m_ReadBuffer, m_ReadSize, Network.CLIENT_READ_BUFF_MAX - m_ReadSize, SocketFlags.None, ReceiveCallBack, m_Socket); } catch (SocketException e) { OnError(e); m_Socket.Close(); OnDisconnected(); } }
public bool Writer_s2c_login_error(ref Network.PtoBase data, ref BinaryWriter bw) { T_s2c_login_error t = (T_s2c_login_error)data; return(t.Write(ref bw)); }
public bool Writer_c2s_login_version(ref Network.PtoBase data, ref BinaryWriter bw) { T_c2s_login_version t = (T_c2s_login_version)data; return(t.Write(ref bw)); }