| | |
| | | using System; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Net; |
| | |
| | | socket.Listen(30); |
| | | //开始接受客户端连接请求 |
| | | socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); |
| | | //Console.ReadLine(); |
| | | } |
| | | catch (Exception e) { |
| | | Console.WriteLine(e.Message); |
| | |
| | | public static Dictionary<string, Socket> clients = new Dictionary<string, Socket>(); |
| | | public static Dictionary<string, byte[]> buffers = new Dictionary<string, byte[]>(); |
| | | public static void ClientAccepted(IAsyncResult ar) { |
| | | //try |
| | | //{ |
| | | |
| | | |
| | | Console.WriteLine("ClientAccepted================"); |
| | | var socket = ar.AsyncState as Socket; |
| | | var client = socket.EndAccept(ar); |
| | | string remote_ip = ((System.Net.IPEndPoint)client.RemoteEndPoint).Address.ToString(); |
| | |
| | | } |
| | | //准备接受下一个客户端请求 |
| | | socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); |
| | | |
| | | |
| | | //} |
| | | //catch (Exception ex) |
| | | //{ |
| | | // Console.WriteLine($"ClientAccepted 异常: {ex.ToString()}"); |
| | | //} |
| | | } |
| | | |
| | | |
| | | public static void ReceiveMessage(IAsyncResult ar) { |
| | | try { |
| | | //Console.WriteLine("ReceiveMessage================"); |
| | | var socket = ar.AsyncState as Socket; |
| | | string remote_ip = ((System.Net.IPEndPoint)socket.RemoteEndPoint).Address.ToString(); |
| | | var length = socket.EndReceive(ar); |
| | |
| | | if (buffers.Keys.Contains(remote_ip)) { |
| | | //读取出来消息内容 |
| | | var message = GetHexString(buffers[remote_ip], length);//16 10 |
| | | Console.WriteLine(message); |
| | | Console.WriteLine($"ReceiveMessage接收信号:{message}"); |
| | | LogHelper.Info($"ReceiveMessage接收信号:{message}"); |
| | | //Console.WriteLine(message); |
| | | //3A 00 01 00 01 05 73 00 02 01 01 B8 |
| | | //按钮盒 |
| | | if (message.Substring(0, 2) == "3A") { |
| | | if (message.Substring(0, 2) == "3a") { |
| | | //显示消息 |
| | | if (length != 24) { |
| | | message = message.Substring(0, 24); |
| | |
| | | PlcHelper.Receive(remote_ip, message); |
| | | Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer |
| | | } |
| | | //3F 00 10 20 30 40 0D 0A |
| | | //3F 00 10 20 30 40 50 60 0D 0A |
| | | //安全交互 |
| | | else if (message.Substring(0, 4) == "3F00") |
| | | else if (message.Substring(0, 4) == "3f00") |
| | | { |
| | | //显示消息 |
| | | if (length != 16) |
| | | if (length != 20) |
| | | { |
| | | message = message.Substring(0, 16); |
| | | message = message.Substring(0, 20); |
| | | } |
| | | PlcHelper.Receive(remote_ip, message); |
| | | Array.Clear(buffers[remote_ip], 0, buffers[remote_ip].Length);//清空当前IP Buffer |