private void RunListenServer() { try { int port = Convert.ToInt32(portText.Text.Trim()); //服务器port IPAddress ip = IPAddress.Parse(IP.GetLocalIP()); //服务器端ip myListener = new TcpListener(ip, port); //创建TcpListener实例 myListener.Start(); //start this.RunOnUiThread(() => //this 指代的是Activity对象,RunOnUiThread 是Activity的一个成员方法 { RefreshMessageView("请连接:" + IP.GetLocalIP() + ":" + port); }); while (serverRuning) { newClient = myListener.AcceptTcpClient();//等待客户端连接,长连接 //this.RunOnUiThread(() => //{ // RefreshMessageView("链接成功"); //}); //while (serverRuning) //{ //try //{ clientStream = newClient.GetStream(); //利用TcpClient对象GetStream方法得到网络流 TCPHelper newtcp = new TCPHelper(); byte[] btemp = newtcp.ReceiveByteArray(clientStream); Message mes = new Message(btemp); byte messagetype = mes.Date_9F01.Data[0]; string url = ""; string logData = ""; Dictionary <string, string> log; byte[] barCodeData = null; switch (messagetype) { case 0x00: logData = Encoding.Default.GetString(mes.Date_9F03.Data); url = Encoding.Default.GetString(mes.Date_9F05.Data); log = UP_SDK.SDKUtil.CoverStringToDictionary(logData, Encoding.UTF8); var re_00 = Https.sendOfflineBarCodeAsync(log, url); //脱机扫码 break; case 0x01: logData = Encoding.Default.GetString(mes.Date_9F03.Data); url = Encoding.Default.GetString(mes.Date_9F05.Data); log = UP_SDK.SDKUtil.CoverStringToDictionary(logData, Encoding.UTF8); var re_01 = Https.sendBarCodeAsync(log, url); break; case 0x02: //图片扫描 break; default: break; } byte[] byteArray = mes.PackageMessage(barCodeData, null, true); newtcp.SendByteArray(clientStream, byteArray); clientStream.Close(); newClient.Close(); newClient.Dispose(); // Shutdown and end connection } } catch (Exception e) { this.RunOnUiThread(() => { RefreshMessageView("异常信息" + e.Message); }); if (clientStream != null) { clientStream.Close(); clientStream = null; } if (myListener != null) { myListener.Stop(); myListener = null; } if (!e.Message.Equals("interrupted")) { this.RunOnUiThread(() => { RefreshMessageView("异常信息" + e.Message); createButton.PerformClick(); }); } return; } }