public void addNewCallBackMessage(Message message) { lock (callBackMessages) { callBackMessages.Add(message); } }
public void addNewSendMessage(Message message) { lock (sendMessages) { sendMessages.Add(message); MySocket.GetInstance().SendMessage(message); } }
/// <summary> /// 匹配消息 /// </summary> /// <returns></returns> public void getSendMessage(Message c) { lock (sendMessages) { for (int i = 0; i < sendMessages.Count; i++) { if (c.cmd == sendMessages[i].cmd && c.cmd_branch == sendMessages[i].cmd_branch) { if (sendMessages[i].eventHandle != null) { c.eventHandle = sendMessages[i].eventHandle; sendMessages.RemoveAt(i); } } } } }
public void submit() { tips.text = ""; string accountText = account.text; string passwordText = password.text; if (string.IsNullOrEmpty(accountText)) { tips.text = "用户名不能为空!"; return; } if (string.IsNullOrEmpty(passwordText)) { tips.text = "密码不能为空!"; return; } LoginVo vo = new LoginVo(accountText,passwordText,3,getTime(),""); com.tianhe.net.Message message = new com.tianhe.net.Message(GlobalConst.LOGIN, GlobalConst.LOGIN_LOGIN, vo, (object o) => { LoginResult result = (LoginResult)o; callback(result); }); MessageManager.messageManager.addNewSendMessage(message); }
//向服务端发送一条字符串 public void SendMessage(Message message) { byte[] msg = encodeMessage(message); if (!clientSocket.Connected) { clientSocket.Close(); return; } try { IAsyncResult asyncSend = clientSocket.BeginSend(msg, 0, msg.Length, SocketFlags.None, new AsyncCallback(sendCallback), clientSocket); bool success = asyncSend.AsyncWaitHandle.WaitOne(5000, true); if (!success) { clientSocket.Close(); Console.WriteLine("Failed to SendMessage server."); } } catch { Console.WriteLine("send message error"); } }
public byte[] encodeMessage(Message message) { if (message == null) return null; return message.data.getBytes(); }
public Message decodeMessage(ByteBuffer bb) { if (bb == null || bb.available() <= 0) return null; readBuffer.writeByteBuffer(bb); int len = readBuffer.readShort(); if (len > readBuffer.available()) { readBuffer.rPos(readBuffer.rPos() - 2); return null; } ByteBuffer data = new ByteBuffer(); data.writeByteBuffer(readBuffer); Message message = new Message(data,len-20); readBuffer.compack(len - 1); return message; }