/// <summary> /// 处理接收的服务器收据 /// </summary> private void ReceiveData() { string receiveString = null; while (!isExit) { ReceiveMessageDelegate d = new ReceiveMessageDelegate(receiveMessage); IAsyncResult result = d.BeginInvoke(out receiveString, null, null); //使用轮询方式来盘点异步操作是否完成 while (!result.IsCompleted) { if (isExit) { break; } Thread.Sleep(100); } //获取Begin方法的返回值所有输入/输出参数 d.EndInvoke(out receiveString, result); if (receiveString == null) { if (!isExit) { dgLog("与服务器失去联系,即将开始重新链接..."); IsConnect = false; } break; } //string[] splitString = receiveString.Split(','); //string command = splitString[0].ToLower(); try { RevMsg = Derializer(receiveString); if (RevMsg != null) { string str = "2&"; str += (int)RevMsg.Order + "&"; str += RevMsg.DataInfo; AddTalkMessage(str); } else { AddTalkMessage("消息解析失败:" + receiveString); } } catch (Exception ex) { AddTalkMessage("消息解析失败:" + receiveString); } } }
/// <summary> /// 向服务端发送数据 /// </summary> /// <param name="message"></param> private void SendMessage(CilentInfo message) { try { BinaryFormatter formatter = new BinaryFormatter(); bw.Write(Serializer(message)); bw.Flush(); } catch { dgLog("发送失败"); } }
/// <summary> /// 读取服务器发过来的信息 /// </summary> /// <param name="receiveMessage"></param> private void receiveMessage(out string receiveMessage) { receiveMessage = null; try { receiveMessage = br.ReadString(); RevMsg = Derializer(receiveMessage); } catch (Exception ex) { dgLog(ex.Message); } }
/// <summary> /// 异步向服务器发送数据 /// </summary> /// <param name="message"></param> private void AsyncSendMessage(CilentInfo message) { SendMessageDelegate d = new SendMessageDelegate(SendMessage); IAsyncResult result = d.BeginInvoke(message, null, null); while (!result.IsCompleted) { if (isExit) { return; } Thread.Sleep(50); } SendMessageStates states = new SendMessageStates(); states.d = d; states.result = result; Thread t = new Thread(FinishAsyncSendMessage); t.IsBackground = true; t.Start(states); }
/// <summary> /// 序列化 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string Serializer(CilentInfo info) { return JsonConvert.SerializeObject(info); }
/// <summary> /// 异步向服务器发送数据 /// </summary> /// <param name="message"></param> private void AsyncSendMessage(CilentInfo message) { SendMessageDelegate d = new SendMessageDelegate(SendMessage); IAsyncResult result = d.BeginInvoke(message, null, null); while (!result.IsCompleted) { if (isExit) return; Thread.Sleep(50); } SendMessageStates states = new SendMessageStates(); states.d = d; states.result = result; Thread t = new Thread(FinishAsyncSendMessage); t.IsBackground = true; t.Start(states); }
/// <summary> /// 处理接收的服务器收据 /// </summary> private void ReceiveData() { string receiveString = null; while (!isExit) { ReceiveMessageDelegate d = new ReceiveMessageDelegate(receiveMessage); IAsyncResult result = d.BeginInvoke(out receiveString, null, null); //使用轮询方式来盘点异步操作是否完成 while (!result.IsCompleted) { if (isExit) break; Thread.Sleep(100); } //获取Begin方法的返回值所有输入/输出参数 d.EndInvoke(out receiveString, result); if (receiveString == null) { if (!isExit) { dgLog("与服务器失去联系,即将开始重新链接..."); IsConnect = false; } break; } //string[] splitString = receiveString.Split(','); //string command = splitString[0].ToLower(); try { RevMsg = Derializer(receiveString); if (RevMsg != null) { string str = "2&"; str += (int) RevMsg.Order + "&"; str += RevMsg.DataInfo; AddTalkMessage(str); } else { AddTalkMessage("消息解析失败:"+receiveString); } } catch (Exception ex) { AddTalkMessage("消息解析失败:"+receiveString); } } }
/// <summary> /// 序列化 /// </summary> /// <param name="info"></param> /// <returns></returns> public static string Serializer(CilentInfo info) { return(JsonConvert.SerializeObject(info)); }