|
|
|
@ -27,24 +27,27 @@ namespace DevicesService.Commen
|
|
|
|
|
{ |
|
|
|
|
public static List<TcpClient> clients = new List<TcpClient>(); |
|
|
|
|
private static ScriptCallbackObject scriptCallback = new ScriptCallbackObject(); |
|
|
|
|
public void Start() |
|
|
|
|
public void Start() |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
TcpListener listener = new TcpListener(IPAddress.Any, 1234); |
|
|
|
|
listener.Start(); |
|
|
|
|
Console.WriteLine("服务器已启动,等待客户端连接..."); |
|
|
|
|
Timer timer = new Timer(SendHelloMessage, null, TimeSpan.Zero, TimeSpan.FromSeconds(20)); |
|
|
|
|
Console.WriteLine("服务器已启动,等待客户端连接..."); |
|
|
|
|
Timer timer = new Timer(SendHelloMessage, null, TimeSpan.Zero, TimeSpan.FromSeconds(200)); |
|
|
|
|
while (true) |
|
|
|
|
{ |
|
|
|
|
TcpClient client = listener.AcceptTcpClient(); |
|
|
|
|
Console.WriteLine("客户端已连接:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
Console.WriteLine("客户端已连接:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
clients.Add(client); |
|
|
|
|
// 启动线程,接收客户端消息 |
|
|
|
|
ThreadPool.QueueUserWorkItem(ReceiveMessage, client); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) { Console.WriteLine(ex.Message); } |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine(ex.Message); |
|
|
|
|
} |
|
|
|
|
finally { } |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -68,7 +71,10 @@ namespace DevicesService.Commen
|
|
|
|
|
stream.Write(data, 0, data.Length); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) { Console.WriteLine(ex.Message); } |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine(ex.Message); |
|
|
|
|
} |
|
|
|
|
finally { } |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -88,7 +94,7 @@ namespace DevicesService.Commen
|
|
|
|
|
} |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("向客户端 {0} 发送消息失败:{1}", client.Client.RemoteEndPoint, ex.Message); |
|
|
|
|
Console.WriteLine("向客户端 {0} 发送消息失败:{1}", client.Client.RemoteEndPoint, ex.Message); |
|
|
|
|
clients.Remove(client); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
@ -108,7 +114,6 @@ namespace DevicesService.Commen
|
|
|
|
|
if (client != null) |
|
|
|
|
{ |
|
|
|
|
NetworkStream stream = client.GetStream(); |
|
|
|
|
|
|
|
|
|
while (true) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
@ -123,20 +128,20 @@ namespace DevicesService.Commen
|
|
|
|
|
|
|
|
|
|
if (bytesRead < messageSize) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("无法读取消息,可能是连接断开:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
Console.WriteLine("无法读取消息,可能是连接断开:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
clients.Remove(client); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
string message = Encoding.UTF8.GetString(buffer, 0, bytesRead); |
|
|
|
|
if (!message.Contains("heartbeatClient") || message != "keepAlive") |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("收到客户端消息:{0}", message); |
|
|
|
|
Console.WriteLine("收到客户端消息:{0}", message); |
|
|
|
|
string indata = message; |
|
|
|
|
if (!string.IsNullOrEmpty(indata)) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
string result = Util.Base64str2(indata); |
|
|
|
|
Log.Info("接收到COM口传来数据:" + result); |
|
|
|
|
//Log.Info("接收到COM口传来数据:" + result); |
|
|
|
|
if (!string.IsNullOrEmpty(result)) |
|
|
|
|
{ |
|
|
|
|
JObject jo = (JObject)JsonConvert.DeserializeObject(result); |
|
|
|
@ -157,8 +162,8 @@ namespace DevicesService.Commen
|
|
|
|
|
joparam = (JObject)JsonConvert.DeserializeObject(param); |
|
|
|
|
data = joparam["data"].ToString(); |
|
|
|
|
resultback = scriptCallback.IDCardRead(data, callback); |
|
|
|
|
//Console.WriteLine(resultback); |
|
|
|
|
Log.Info("读取身份证 返回数据:" + resultback); |
|
|
|
|
////Console.WriteLine(resultback); |
|
|
|
|
//Log.Info("读取身份证 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -182,7 +187,7 @@ namespace DevicesService.Commen
|
|
|
|
|
string qrcode = joparam["qrcode"].ToString(); |
|
|
|
|
string ywmc = joparam["ywmc"].ToString(); |
|
|
|
|
resultback = scriptCallback.SendByPrint(ph, ddrs, qrcode, ywmc, callback); |
|
|
|
|
Log.Info("打印排队票据 返回数据:" + resultback); |
|
|
|
|
//Log.Info("打印排队票据 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -204,8 +209,8 @@ namespace DevicesService.Commen
|
|
|
|
|
data = joparam["text"].ToString(); |
|
|
|
|
bool ispaye = Convert.ToBoolean(joparam["ispaye"].ToString()); |
|
|
|
|
resultback = scriptCallback.payleText(data, ispaye, callback); |
|
|
|
|
//Console.WriteLine(resultback); |
|
|
|
|
Log.Info("文字语音播报 返回数据:" + resultback); |
|
|
|
|
////Console.WriteLine(resultback); |
|
|
|
|
//Log.Info("文字语音播报 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -227,7 +232,7 @@ namespace DevicesService.Commen
|
|
|
|
|
string content = joparam["content"].ToString(); |
|
|
|
|
string phone = joparam["phone"].ToString(); |
|
|
|
|
resultback = scriptCallback.SendSSM(content, phone, callback); |
|
|
|
|
Log.Info("发送短信 返回数据:" + resultback); |
|
|
|
|
//Log.Info("发送短信 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -248,7 +253,7 @@ namespace DevicesService.Commen
|
|
|
|
|
joparam = (JObject)JsonConvert.DeserializeObject(param); |
|
|
|
|
data = joparam["url"].ToString(); |
|
|
|
|
resultback = scriptCallback.openCamera(data, callback); |
|
|
|
|
Log.Info("打开高拍仪并且进行快速扫描文件 返回数据:" + resultback); |
|
|
|
|
//Log.Info("打开高拍仪并且进行快速扫描文件 返回数据:" + resultback); |
|
|
|
|
//base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, resultback); |
|
|
|
@ -269,7 +274,7 @@ namespace DevicesService.Commen
|
|
|
|
|
joparam = (JObject)JsonConvert.DeserializeObject(param); |
|
|
|
|
data = joparam["data"].ToString(); |
|
|
|
|
resultback = scriptCallback.OpenSign(data, callback); |
|
|
|
|
Log.Info("打开签字版数据 返回数据:" + resultback); |
|
|
|
|
//Log.Info("打开签字版数据 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -290,7 +295,7 @@ namespace DevicesService.Commen
|
|
|
|
|
joparam = (JObject)JsonConvert.DeserializeObject(param); |
|
|
|
|
data = joparam["data"].ToString(); |
|
|
|
|
resultback = scriptCallback.CloseSign(data, callback); |
|
|
|
|
Log.Info("关闭签字版数据 返回数据:" + resultback); |
|
|
|
|
//Log.Info("关闭签字版数据 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -309,7 +314,7 @@ namespace DevicesService.Commen
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
resultback = scriptCallback.GetSignData(data, callback); |
|
|
|
|
Log.Info("获取签字版数据 返回数据:" + resultback); |
|
|
|
|
//Log.Info("获取签字版数据 返回数据:" + resultback); |
|
|
|
|
//base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, resultback); |
|
|
|
@ -333,7 +338,30 @@ namespace DevicesService.Commen
|
|
|
|
|
string url = joparam["url"].ToString(); |
|
|
|
|
bool isopen = Convert.ToBoolean(joparam["isopen"].ToString()); |
|
|
|
|
resultback = scriptCallback.SoundRecording(isopen, url, callback); |
|
|
|
|
Log.Info("开始录音、取消录音、结束录音 返回数据:" + resultback); |
|
|
|
|
//Log.Info("开始录音、取消录音、结束录音 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
string rest = "{\"callback\":\"" + "callback" + "\",\"message\":\"fali\",\"code\":\"400\",\"status\":false,\"data\":\"" + ex.Message + "\"}"; |
|
|
|
|
base64 = Util.str2Base64(rest); |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
//{"type":"13","param":{"data":""}} |
|
|
|
|
case Func.Finger: |
|
|
|
|
#region 读取指纹 |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
joparam = (JObject)JsonConvert.DeserializeObject(param); |
|
|
|
|
data = joparam["data"].ToString(); |
|
|
|
|
resultback = scriptCallback.IDCardRead(data, callback); |
|
|
|
|
////Console.WriteLine(resultback); |
|
|
|
|
//Log.Info("读取指纹 返回数据:" + resultback); |
|
|
|
|
base64 = Util.str2Base64(resultback); |
|
|
|
|
//向com对方发送数据 |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
@ -344,6 +372,7 @@ namespace DevicesService.Commen
|
|
|
|
|
base64 = Util.str2Base64(rest); |
|
|
|
|
SendDataWithHeader(client, base64); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
@ -365,7 +394,7 @@ namespace DevicesService.Commen
|
|
|
|
|
if (message == "keepAlive") |
|
|
|
|
{ |
|
|
|
|
// 客户端发送心跳指令,关闭连接 |
|
|
|
|
Console.WriteLine("客户端发送了心跳指令,关闭连接:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
Console.WriteLine("客户端发送了心跳指令,关闭连接:{0}", client.Client.RemoteEndPoint); |
|
|
|
|
clients.Remove(client); |
|
|
|
|
client.Close(); |
|
|
|
|
break; |
|
|
|
@ -373,6 +402,7 @@ namespace DevicesService.Commen
|
|
|
|
|
} |
|
|
|
|
catch { } |
|
|
|
|
finally { } |
|
|
|
|
GC.Collect(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -427,6 +457,33 @@ namespace DevicesService.Commen
|
|
|
|
|
catch { return -1; } |
|
|
|
|
finally { } |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// 回传签字图片 |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="Message"></param> |
|
|
|
|
public static void SendImages(string Message) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
foreach (TcpClient client in clients) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
SendDataWithHeader(client, Message); |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
Console.WriteLine("向客户端 {0} 发送消息失败:{1}", client.Client.RemoteEndPoint, ex.Message); |
|
|
|
|
clients.Remove(client); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch { } |
|
|
|
|
finally { } |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|