| | |
| | | private TcpClient _tcpClient; |
| | | |
| | | //创建一个委托,用来满足其他类调用 |
| | | public delegate void DelegateMessage(byte[] bytes); |
| | | public event DelegateMessage OnmessageEvent; |
| | | //public delegate void DelegateMessage(string str); |
| | | public Action<string> ReceiveEvent; |
| | | |
| | | /// <summary> |
| | | /// 构造函数 |
| | |
| | | networkStream.Write(bytes, 0, bytes.Length); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取列表数据回调方法 |
| | | /// </summary> |
| | | public Action<string> GetListResponseAction; |
| | | //接收消息 |
| | | public void ReceiveMessage() |
| | | { |
| | | NetworkStream networkStream = _tcpClient.GetStream(); |
| | | while (true) |
| | | { |
| | | byte[] buffer = new byte[8]; |
| | | int size = networkStream.Read(buffer, 0, buffer.Length); |
| | | OnmessageEvent?.Invoke(buffer); |
| | | // 定义一个2M的缓存区; |
| | | byte[] arrMsgRec = new byte[1024 * 1024 * 2]; |
| | | int size = networkStream.Read(arrMsgRec, 0, arrMsgRec.Length); |
| | | var tcpDataString = System.Text.Encoding.UTF8.GetString(arrMsgRec, 0, arrMsgRec.Length); |
| | | if (!string.IsNullOrEmpty(tcpDataString)) |
| | | { |
| | | ReceiveEvent?.Invoke(tcpDataString); |
| | | } |
| | | |
| | | //// 将接受到的数据存入到输入 arrMsgRec中; |
| | | //int length = -1; |
| | | //try |
| | | //{ |
| | | // length = socketClient.Receive(arrMsgRec); // 接收数据,并返回数据的长度; |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // MainPage.Log($"tcpListener error 1 : {ex.Message}"); |
| | | |
| | | // Flag_Receive = false; |
| | | // // 从通信线程集合中删除被中断连接的通信线程对象; |
| | | // string keystr = socketClient.RemoteEndPoint.ToString(); |
| | | // dic_ClientSocket.Remove(keystr);//删除客户端字典中该socket |
| | | // dic_ClientThread[keystr].Abort();//关闭线程 |
| | | // dic_ClientThread.Remove(keystr);//删除字典中该线程 |
| | | |
| | | // tcpClient = null; |
| | | // socketClient = null; |
| | | // break; |
| | | //} |
| | | //byte[] buf = new byte[length]; |
| | | //Array.Copy(arrMsgRec, buf, length); |
| | | //lock (tcpClient.m_Buffer) |
| | | //{ |
| | | // var tcpDataString = System.Text.Encoding.UTF8.GetString(arrMsgRec, 0, length); |
| | | // if (!string.IsNullOrEmpty(tcpDataString)) |
| | | // { |
| | | // ReceiveEvent?.Invoke(tcpDataString); |
| | | // } |
| | | |
| | | // MainPage.Log($"接收服务端数据:{tcpDataString}"); |
| | | //} |
| | | } |
| | | } |
| | | |