{"id":160,"date":"2024-05-12T23:27:25","date_gmt":"2024-05-12T15:27:25","guid":{"rendered":"https:\/\/www.dirx.com.cn\/?p=160"},"modified":"2024-05-12T23:28:18","modified_gmt":"2024-05-12T15:28:18","slug":"%e7%b3%bb%e7%bb%9f%e7%ba%a7","status":"publish","type":"post","link":"https:\/\/www.dirx.com.cn\/index.php\/2024\/05\/12\/%e7%b3%bb%e7%bb%9f%e7%ba%a7\/","title":{"rendered":"\u7cfb\u7edf\u7ea7"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u63a7\u5236\u4e2d\u5fc3<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Sockets;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\n\nnamespace \u63a7\u5236\u4e2d\u5fc3\n{\n    public partial class Control : Form\n    {\n        public Control()\n        {\n            InitializeComponent();\n        }\n\n        \/\/\u5b9a\u4e49\u56de\u8c03:\u89e3\u51b3\u8de8\u7ebf\u7a0b\u8bbf\u95ee\u95ee\u9898\n        private delegate void SetTextValueCallBack(string strValue);\n        private delegate void SetTextValueCallBack2(string strValue);\n        private delegate void SetTextValueCallBack3(string strValue);\n        \/\/\u5b9a\u4e49\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u7684\u56de\u8c03\n        private delegate void ReceiveMsgCallBack(string strReceive);\n        private delegate void ReceiveMsgCallBack2(string strReceive);\n        \/\/\u58f0\u660e\u56de\u8c03\n        private SetTextValueCallBack setCallBack;\n        private SetTextValueCallBack2 setCallBack2;\n        private SetTextValueCallBack3 setCallBack3;\n        \/\/\u58f0\u660e\n        private ReceiveMsgCallBack receiveCallBack;\n        private ReceiveMsgCallBack2 receiveCallBack2;\n\n        \/\/\u7528\u4e8e\u901a\u4fe1\u7684Socket\n        Socket socketProduct;\n        \/\/\u7528\u4e8e\u76d1\u542c\u7684SOCKET\n        Socket socketWatch;\n\n        \/\/\u5c06\u8fdc\u7a0b\u8fde\u63a5\u7684\u5ba2\u6237\u7aef\u7684IP\u5730\u5740\u548cSocket\u5b58\u5165\u96c6\u5408\u4e2d\n        Dictionary&lt;string, Socket> dicSocket = new Dictionary&lt;string, Socket>();\n\n        \/\/\u521b\u5efa\u76d1\u542c\u8fde\u63a5\u7684\u7ebf\u7a0b\n        Thread AcceptSocketThread;\n        \/\/\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u7684\u7ebf\u7a0b\n        Thread threadReceive;\n        \/\/Thread threadReceive2;\n\n        \/\/\u53d8\u91cf\u8bbe\u7f6e\n        public int sum_need = 0;\n        public int sum_suit = 0;\n        public int box_cap = 20;\n        public int have_del = 0;\n        public int have_box = 0;\n        public bool isStart = false;\n\n\n        \n        \/\/\u5f00\u59cb\u76d1\u542c\n        private void Start_Monitor_Click(object sender, EventArgs e)\n        {\n            \/\/\u5f53\u70b9\u51fb\u5f00\u59cb\u76d1\u542c\u7684\u65f6\u5019 \u5728\u670d\u52a1\u5668\u7aef\u521b\u5efa\u4e00\u4e2a\u8d1f\u8d23\u76d1\u542cIP\u5730\u5740\u548c\u7aef\u53e3\u53f7\u7684Socket\n            socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);\n            \/\/\u83b7\u53d6ip\u5730\u5740\n            IPAddress ip = IPAddress.Parse(this.txt_IP.Text.Trim());\n            \/\/\u521b\u5efa\u7aef\u53e3\u53f7\n            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(this.txt_Port.Text.Trim()));\n            \/\/\u7ed1\u5b9aIP\u5730\u5740\u548c\u7aef\u53e3\u53f7\n            socketWatch.Bind(point);\n            this.txt_Control.AppendText(\"\u76d1\u542c\u6210\u529f\" + \" \\r \\n\");\n            \/\/\u5f00\u59cb\u76d1\u542c:\u8bbe\u7f6e\u6700\u5927\u53ef\u4ee5\u540c\u65f6\u8fde\u63a5\u591a\u5c11\u4e2a\u8bf7\u6c42\n            socketWatch.Listen(10);\n\n            \/\/\u5b9e\u4f8b\u5316\u56de\u8c03\n            setCallBack = new SetTextValueCallBack(SetTextValue);\n            setCallBack2 = new SetTextValueCallBack2(SetTextValue2);\n            setCallBack3 = new SetTextValueCallBack3(SetTextValue3);\n            receiveCallBack = new ReceiveMsgCallBack(ReceiveMsg);\n            receiveCallBack2 = new ReceiveMsgCallBack2(ReceiveMsg2);\n\n            \/\/\u521b\u5efa\u7ebf\u7a0b\n            AcceptSocketThread = new Thread(new ParameterizedThreadStart(StartListen));\n            AcceptSocketThread.IsBackground = true;\n            AcceptSocketThread.Start(socketWatch);\n        }\n\n        \/\/\/ \u7b49\u5f85\u751f\u4ea7\u8f66\u95f4\u7684\u8fde\u63a5\uff0c\u5e76\u4e14\u521b\u5efa\u4e0e\u4e4b\u901a\u4fe1\u7528\u7684Socket\n        private void StartListen(object obj)\n        {\n            Socket socketWatch = obj as Socket;\n            while (true)\n            {\n                \/\/\u7b49\u5f85\u5ba2\u6237\u7aef\u7684\u8fde\u63a5\uff0c\u5e76\u4e14\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u901a\u4fe1\u7684Socket\n                socketProduct = socketWatch.Accept();\n                \/\/\u83b7\u53d6\u8fdc\u7a0b\u4e3b\u673a\u7684ip\u5730\u5740\u548c\u7aef\u53e3\u53f7\n                string strIp = socketProduct.RemoteEndPoint.ToString();\n                \/\/Console.WriteLine(strIp);\n                dicSocket.Add(strIp, socketProduct);\n                \/\/Console.WriteLine(dicSocket.First().Key);\n                \/\/Console.WriteLine(dicSocket.Last().Key);\n                \/\/this.cmb_Socket.Invoke(setCmbCallBack, strIp);\n                string strMsg = \"\u8fdc\u7a0b\u4e3b\u673a\uff1a\" + socketProduct.RemoteEndPoint + \"\u8fde\u63a5\u6210\u529f\";\n                \/\/this.txt_Control.AppendText(strMsg);\n                \/\/\u4f7f\u7528\u56de\u8c03\n                txt_Control.Invoke(setCallBack3, strMsg);\n\n                \/\/\u5b9a\u4e49\u63a5\u6536\u5ba2\u6237\u7aef\u6d88\u606f\u7684\u7ebf\u7a0b\n                Thread threadReceive = new Thread(new ParameterizedThreadStart(Receive));\n                threadReceive.IsBackground = true;\n                threadReceive.Start(socketProduct);\n                \/\/Thread threadReceive2 = new Thread(new ParameterizedThreadStart(Receive2));\n                \/\/threadReceive2.IsBackground = true;\n                \/\/threadReceive2.Start(socketProduct);\n            }\n        }\n\n        \/\/\/ \u63a7\u5236\u4e2d\u5fc3\u4e0d\u505c\u7684\u63a5\u6536\u751f\u4ea7\u8f66\u95f4\u53d1\u9001\u7684\u6d88\u606f\n        private void Receive(object obj)\n        {\n            Socket socketSend = obj as Socket;\n            while (true)\n            {\n                \/\/\u5ba2\u6237\u7aef\u8fde\u63a5\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u7684\u6d88\u606f\n                byte[] buffer = new byte[2048];\n                \/\/\u5b9e\u9645\u63a5\u6536\u5230\u7684\u6709\u6548\u5b57\u8282\u6570\n                int count = socketSend.Receive(buffer);\n                if (count == 0)\/\/count \u8868\u793a\u5ba2\u6237\u7aef\u5173\u95ed\uff0c\u8981\u9000\u51fa\u5faa\u73af\n                {\n                    break;\n                }\n                else\n                {\n                    if (socketSend.RemoteEndPoint.ToString() == dicSocket.Last().Key)\n                    {\n                        string str = Encoding.Default.GetString(buffer, 0, count);\n                        if(str== \"\u88c5\u914d\u5b8c\u6210\uff0c\u6b63\u5728\u914d\u9001\")\n                        {\n                            txt_Delivery.Invoke(receiveCallBack2, str);\n                        }\n                        else\n                        {\n                            string strReceiveMsg = \"\u63a5\u6536\uff1a\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\" + \"\u5df2\u5b8c\u6210\u88c5\u914d\" + str + \"\u7bb1\";\n                            txt_Delivery.Invoke(receiveCallBack2, strReceiveMsg);\n                        }\n                    }\n                    \/\/txt_Produce.Invoke(receiveCallBack, strReceiveMsg);\n                    else if (socketSend.RemoteEndPoint.ToString() == dicSocket.First().Key)\n                    {\n                        string str = Encoding.Default.GetString(buffer, 0, count);\n                        string strReceiveMsg = \"\u63a5\u6536\uff1a\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\" +\"\u5df2\u751f\u4ea7\u9632\u62a4\u670d\"+ str+\"\u5957\";\n                        txt_Produce.Invoke(receiveCallBack, strReceiveMsg);\n                        sum_suit = int.Parse(str);\n                        if (sum_suit - have_del >= 20 || sum_suit == sum_need)\n                        {\n                            \/\/double temp = sum_suit - have_del \/ box_cap;\n                            \/\/string strMsg = (Math.Ceiling(temp)).ToString();\n                            int inc = 1;\n                            have_del = have_del + 20;\n                            have_box++;\n                            string strMsg = inc.ToString();\n                            \/\/Console.WriteLine(strMsg);\n                            byte[] buffer_del = Encoding.Default.GetBytes(strMsg);\n                            List&lt;byte> list = new List&lt;byte>();\n                            \/\/Console.WriteLine(list);\n                            list.Add(0);\n                            list.AddRange(buffer_del);\n                            \/\/\u5c06\u6cdb\u578b\u96c6\u5408\u8f6c\u6362\u4e3a\u6570\u7ec4\n                            byte[] newBuffer = list.ToArray();\n                            \/\/\u83b7\u5f97\u7528\u6237\u9009\u62e9\u7684IP\u5730\u5740\n                            string ip = dicSocket.Last().Key.ToString();\n                            \/\/Console.WriteLine(newBuffer);\n                            dicSocket[ip].Send(newBuffer);\n\n                            \/\/\u901a\u77e5\u914d\u9001\u8f66\u95f4\u4efb\u52a1\u7ed3\u675f\n                            if(sum_suit == sum_need)\n                            {\n                                int flag = 8;\n                                string strFlag = flag.ToString();\n                                byte[] buffer_flag = Encoding.Default.GetBytes(strFlag);\n                                List&lt;byte> list_flag = new List&lt;byte>();\n                                \/\/Console.WriteLine(list);\n                                list_flag.Add(0);\n                                list_flag.AddRange(buffer_flag);\n                                \/\/\u5c06\u6cdb\u578b\u96c6\u5408\u8f6c\u6362\u4e3a\u6570\u7ec4\n                                byte[] newBuffer_flag = list_flag.ToArray();\n                                \/\/Console.WriteLine(newBuffer);\n                                dicSocket[ip].Send(newBuffer_flag);\n                            }\n                        }\n                    }\n                    else\n                    {\n                        Console.WriteLine(\"\u751f\u4ea7\u7ed3\u675f\");\n                    }\n\n                }\n\n\n            }\n        }\n\n        \/\/\/\/\/ \u63a7\u5236\u4e2d\u5fc3\u4e0d\u505c\u7684\u63a5\u6536\u914d\u9001\u8f66\u95f4\u53d1\u9001\u7684\u6d88\u606f\n        \/\/private void Receive2(object obj)\n        \/\/{\n        \/\/    Socket socketSend = obj as Socket;\n        \/\/    while (true)\n        \/\/    {\n        \/\/        \/\/\u5ba2\u6237\u7aef\u8fde\u63a5\u6210\u529f\u540e\uff0c\u670d\u52a1\u5668\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u7684\u6d88\u606f\n        \/\/        byte[] buffer = new byte[2048];\n        \/\/        \/\/\u5b9e\u9645\u63a5\u6536\u5230\u7684\u6709\u6548\u5b57\u8282\u6570\n        \/\/        int count = socketSend.Receive(buffer);\n        \/\/        if (count == 0)\/\/count \u8868\u793a\u5ba2\u6237\u7aef\u5173\u95ed\uff0c\u8981\u9000\u51fa\u5faa\u73af\n        \/\/        {\n        \/\/            break;\n        \/\/        }\n        \/\/        else\n        \/\/        {\n        \/\/            \/\/string strReceiveMsg1 = \"\u8fd9\u91cc\u662f\u914d\u9001\u8f66\u95f4\";\n        \/\/            \/\/txt_Delivery.Invoke(receiveCallBack2, strReceiveMsg1);\n        \/\/            if (socketSend.RemoteEndPoint.ToString() == dicSocket.Last().Key)\n        \/\/            {\n        \/\/                string str = Encoding.Default.GetString(buffer, 0, count);\n        \/\/                string strReceiveMsg = \"\u63a5\u6536\uff1a\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\" + str;\n        \/\/                txt_Delivery.Invoke(receiveCallBack2, strReceiveMsg);\n        \/\/                have_box = int.Parse(str);\n        \/\/                have_del = have_box * 20;\n        \/\/                threadReceive2.Interrupt();\n        \/\/            }\n        \/\/        }\n\n        \/\/    }\n        \/\/}\n\n        \/\/\/ \u56de\u8c03\u59d4\u6258\u9700\u8981\u6267\u884c\u7684\u65b9\u6cd5\n        private void SetTextValue(string strValue)\n        {\n            this.txt_Produce.AppendText(strValue + \" \\r \\n\");\n        }\n\n        private void SetTextValue2(string strValue)\n        {\n            this.txt_Delivery.AppendText(strValue + \" \\r \\n\");\n        }\n\n        private void SetTextValue3(string strValue)\n        {\n            this.txt_Control.AppendText(strValue + \" \\r \\n\");\n        }\n\n        private void ReceiveMsg(string strMsg)\n        {\n            this.txt_Produce.AppendText(strMsg + \" \\r \\n\");\n        }\n\n        private void ReceiveMsg2(string strMsg)\n        {\n            this.txt_Delivery.AppendText(strMsg + \" \\r \\n\");\n        }\n\n        \/\/\u670d\u52a1\u5668\u7ed9\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\n        private void btn_produce_Click(object sender, EventArgs e)\n        {\n            try\n            {\n                \/\/string str_need = \"123\";\n                \/\/byte[] buffer_need = Encoding.Default.GetBytes(str_need);\n                \/\/dicSocket.First().Value.Send(buffer_need);\n\n                sum_need = 0;\n                sum_suit = 0;\n                box_cap = 20;\n                have_del = 0;\n                have_box = 0;\n                isStart = false;\n\n                \/\/\u628a\u751f\u4ea7\u9700\u6c42\u53d1\u7ed9\u751f\u4ea7\u8f66\u95f4\n                sum_need = int.Parse(this.txt_Need.Text.Trim());\n                string strNeed = this.txt_Need.Text.Trim();\n                byte[] buffer_need = Encoding.Default.GetBytes(strNeed);\n                List&lt;byte> list_need = new List&lt;byte>();\n                list_need.Add(0);\n                list_need.AddRange(buffer_need);\n                \/\/\u5c06\u6cdb\u578b\u96c6\u5408\u8f6c\u6362\u4e3a\u6570\u7ec4\n                byte[] newBuffer_nedd = list_need.ToArray();\n                \/\/\u83b7\u5f97\u7528\u6237\u9009\u62e9\u7684IP\u5730\u5740\n                string ip1 = dicSocket.First().Key.ToString();\n                dicSocket[ip1].Send(newBuffer_nedd);\n\n\n                    \/\/double temp = sum_suit - have_del \/ box_cap;\n                    \/\/string strMsg = (Math.Ceiling(temp)).ToString();\n                    \/\/byte[] buffer = Encoding.Default.GetBytes(strMsg);\n                    \/\/List&lt;byte> list = new List&lt;byte>();\n                    \/\/list.Add(0);\n                    \/\/list.AddRange(buffer);\n                    \/\/\/\/\u5c06\u6cdb\u578b\u96c6\u5408\u8f6c\u6362\u4e3a\u6570\u7ec4\n                    \/\/byte[] newBuffer = list.ToArray();\n                    \/\/\/\/\u83b7\u5f97\u7528\u6237\u9009\u62e9\u7684IP\u5730\u5740\n                    \/\/string ip = dicSocket.Last().Key.ToString();\n                    \/\/if (Math.Ceiling(temp) > 0)\n                    \/\/{\n                    \/\/    dicSocket[ip].Send(newBuffer);\n                    \/\/}\n\n            }\n            catch (Exception ex)\n            {\n                MessageBox.Show(\"\u7ed9\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u51fa\u9519:\" + ex.Message);\n            }\n            \/\/socketSend.Send(buffer);\n        }\n\n        \/\/\u505c\u6b62\u76d1\u542c\n        private void Stop_Monitor_Click(object sender, EventArgs e)\n        {\n            socketWatch.Close();\n            socketProduct.Close();\n            \/\/\u7ec8\u6b62\u7ebf\u7a0b\n            AcceptSocketThread.Abort();\n            threadReceive.Abort();\n        }\n    }\n}\n\n\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u751f\u4ea7\u8f66\u95f4<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing System.Net.Sockets;\nusing System.Net;\nusing System.Threading;\nusing System.IO;\n\nnamespace \u751f\u4ea7\u8f66\u95f4\n{\n    public partial class \u751f\u4ea7\u8f66\u95f4 : Form\n    {\n        private int startY = 0;\n        private int startY3 = 0;\n        public \u751f\u4ea7\u8f66\u95f4()\n        {\n            InitializeComponent();\n        }\n\n        private void Form1_Load(object sender, EventArgs e)\n        {\n            Control.CheckForIllegalCrossThreadCalls = false;\n            timer1.Enabled = false;\/\/timer\u63a7\u4ef6\u521d\u59cb\u5316\n            timer1.Interval = 50;\n        }\n\n        private static int sum_suit = 0;\/\/\u5df2\u751f\u4ea7\u6570\u91cf\n        private static int sum_need = 0;\/\/\u5de5\u4f5c\u9700\u6c42\n        private static int isStart = 1;\/\/\u662f\u5426\u5f00\u59cb\n        \/\/public static string IP =\"192.168.1.143\" ;\n        \/\/public static string IP_Port = \"1111\";\n\n        \/\/\u5b9a\u4e49\u56de\u8c03\n        private delegate void SetTextCallBack(string strValue);\n        \/\/\u58f0\u660e\n        private SetTextCallBack setCallBack;\n\n        \/\/\u5b9a\u4e49\u63a5\u6536\u670d\u52a1\u7aef\u53d1\u9001\u6d88\u606f\u7684\u56de\u8c03\n        private delegate void ReceiveMsgCallBack(string strMsg);\n        \/\/\u58f0\u660e\n        private ReceiveMsgCallBack receiveCallBack;\n\n        \/\/\u521b\u5efa\u8fde\u63a5\u7684Socket\n        Socket socketSend;\n        \/\/\u521b\u5efa\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u7684\u7ebf\u7a0b\n        Thread threadReceive;\n\n\n\n\n    private void Begin_Click(object sender, EventArgs e)\n        {\n            try\n            {\n                socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);\n                IPAddress ip = IPAddress.Parse(this.txt_IP.Text.Trim());\n                socketSend.Connect(ip, Convert.ToInt32(this.txt_Port.Text.Trim()));\n                \/\/\u5b9e\u4f8b\u5316\u56de\u8c03\n                setCallBack = new SetTextCallBack(SetValue);\n                receiveCallBack = new ReceiveMsgCallBack(SetValueB);\n                this.txt_Log.Invoke(setCallBack, \"\u8fde\u63a5\u6210\u529f\" + System.Environment.NewLine);\n\n                \/\/\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u4e0d\u505c\u7684\u63a5\u6536\u670d\u52a1\u5668\u53d1\u9001\u6d88\u606f\u7684\u7ebf\u7a0b\n                threadReceive = new Thread(new ThreadStart(Receive));\n                \/\/\u8bbe\u7f6e\u4e3a\u540e\u53f0\u7ebf\u7a0b\n                threadReceive.IsBackground = true;\n                threadReceive.Start();\n              \n                \/\/\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\u4e0d\u505c\u7684\u751f\u4ea7\n                    ThreadStart threadStart = new ThreadStart(Producing);\n                    Thread thread = new Thread(threadStart);\n                    thread.Start();\n                \/\/\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\u4e0d\u505c\u7684\u53d1\u9001\n                ThreadStart threadStart1 = new ThreadStart(Sending);\n                Thread thread1 = new Thread(threadStart1);               \n                thread1.Start();\n                timer1.Start();\n                \/\/\u521b\u5efa\u4e00\u4e2a\u7ebf\u7a0b\u4e0d\u505c\u66f4\u65b0\u7a97\u53e3\n\n               \n\n            }\n            catch (Exception ex)\n            {\n                MessageBox.Show(\"\u8fde\u63a5\u670d\u52a1\u7aef\u51fa\u9519:\" + ex.ToString());\n            }\n        }\n\n      \n\n        public static void Producing()\/\/\u8fd9\u662f\u4e0d\u505c\u751f\u4ea7\u7684\u51fd\u6570\n        {\n            while (true)\n            {\n                if (sum_suit &lt; sum_need)\n                {\n                    \n                    sum_suit++;\n                    Thread.Sleep(1000);\n                 \n                    \/\/\u4f11\u7720\u4e00\u79d2\n                    \/\/  Console.WriteLine(sum_suit);\n                }\n                 if(sum_suit==sum_need&amp;&amp;sum_suit>0)\n                {\n                    sum_need = 0;\n                    sum_suit = 0;\n                }\n\n            }\n\n        }\n        public void  Sending()\/\/\u8fd9\u662f\u4e0d\u505c\u53d1\u9001\u7684\u51fd\u6570\n        {\n            try\n            {\n                \/\/               while (isStart == 1 &amp;&amp; sum_need > sum_suit || isStart == 1 &amp;&amp; sum_need == 0) \n                while (true)\n                {\n                    int x = sum_suit;\n                    if (isStart == 1 &amp;&amp; sum_need >= x)\n                    {\n                        if(sum_suit!=0)\n                        this.txt_Log.AppendText(\"\u672c\u6b21\u751f\u4ea7\u9632\u62a4\u670d\" + sum_suit + \"\u5957 \\r \\n\" + System.Environment.NewLine);\n                        if (sum_suit == sum_need &amp;&amp; sum_need != 0)\/\/\u5f53sum_suit\u7b49\u4e8esum_need\u7684\u65f6\u5019x\u52a01\n                            x = sum_suit + 1;\n                        if (sum_suit > 0)\n                        {\n                            string strMsg;\n                            byte[] buffer;\n                            int receive;\n                            \/\/   strMsg = sum_need.ToString();\n                            strMsg = sum_suit.ToString();\n                            buffer = new byte[2048];\n                            buffer = Encoding.Default.GetBytes(strMsg);\n                            receive = socketSend.Send(buffer);\n                            Thread.Sleep(1000);\n                          \/\/  int y = sum_suit-1;\n                          \/\/  this.txt_Log.AppendText(\"\u672c\u6b21\u751f\u4ea7\u9632\u62a4\u670d\" + sum_suit + \"\u5957 \\r \\n\"+ System.Environment.NewLine);\n                            \n                        }\n                        else\n                        {\n                            Thread.Sleep(1000);\n                        }\n\n                        \/\/           } while (isStart == 1 &amp;&amp; sum_need+1 > sum_suit );\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                MessageBox.Show(\"\u53d1\u9001\u6d88\u606f\u51fa\u9519:\" + ex.Message);\n            }\n\n\n            \/\/\u53d1\u9001\n        }\n        \/\/\/ \u63a5\u6536\u670d\u52a1\u5668\u53d1\u9001\u7684\u6d88\u606f\n        private void Receive()\n    {\n        try\n        {\n            while (true)\n            {\n                byte[] buffer = new byte[2048];\n                \/\/\u5b9e\u9645\u63a5\u6536\u5230\u7684\u5b57\u8282\u6570\n                int r = socketSend.Receive(buffer);\n                if (r == 0)\n                {\n                    break;\n                }\n                else\n                {\n                    \/\/\u5224\u65ad\u53d1\u9001\u7684\u6570\u636e\u7684\u7c7b\u578b\n                    if (buffer[0] == 0)\/\/\u8868\u793a\u53d1\u9001\u7684\u662f\u6587\u5b57\u6d88\u606f\n                    {\n                        string str = Encoding.Default.GetString(buffer, 1, r - 1);\n                             sum_need = int.Parse(str);\n                            \/\/ this.txt_Log.Invoke(receiveCallBack, \"\u63a5\u6536\u8fdc\u7a0b\u670d\u52a1\u5668:\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\" + str);\n                            this.textBox.Invoke(receiveCallBack, str);\n               \n                            \/\/break;\n\n                        }\n            \n                }\n\n\n            }\n        }\n        catch (Exception ex)\n        {\n            MessageBox.Show(\"\u63a5\u6536\u670d\u52a1\u7aef\u53d1\u9001\u7684\u6d88\u606f\u51fa\u9519:\" + ex.ToString());\n        }\n    }\n\n    \n\n\n\n    private void SetValue(string strValue)\n        {\n            this.txt_Log.AppendText(strValue + \"\\r \\n\");\n        }\n        private void SetValueB(string strValue)\n        {\n            this.textBox.AppendText(strValue + \"\\r \\n\");\n        }\n\n\n\n        private void Stop_Click(object sender, EventArgs e)\n        {\n            isStart = 0;\n            \/\/\u5173\u95edsocket\n            socketSend.Close();\n            \/\/\u7ec8\u6b62\u7ebf\u7a0b\n            threadReceive.Abort();\n            timer1.Stop();\n        }\n\n        \/\/\u52a8\u753b\u5b9a\u65f6\n        private void timer1_Tick(object sender, EventArgs e)\n        {\n            if (sum_need > 0&amp;&amp;sum_need>sum_suit)\n            {\n                pictureBox2.Visible = true;\n                pictureBox3.Visible = true;\n                int i = pictureBox2.Location.X + 10;\/\/\u56fe\u7247\u5750\u6807\u79fb\u52a8\n                int j = pictureBox3.Location.X + 10;\n                if (i > 700)\n                {\n                    i = 300;\n                }\n                if (j > 700)\n                {\n                    j = 300;\n                }\n                startY = pictureBox2.Location.Y;\n                startY3 = pictureBox3.Location.Y;\n\n                pictureBox2.Location = new Point(i, startY);\n                pictureBox2.Refresh();\/\/\u4e0d\u65ad\u5237\u65b0\n                pictureBox3.Location = new Point(j, startY3);\n                pictureBox3.Refresh();\/\/\u4e0d\u65ad\u5237\u65b0\n                timer1.Start();\n            }\n            else\n            {\n                pictureBox2.Visible = false;\n                pictureBox3.Visible = false;\n            }\n        }\n    }\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u8f93\u4e2d\u5fc3<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Data;\nusing System.Drawing;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing System.Net.Sockets;\nusing System.Net;\nusing System.Threading;\nusing System.IO;\n\nnamespace \u5ba2\u6237\u7aef\n{\n    public partial class Form1 : Form\n    {\n        public static Form1 MainForm = null;\n        public Form1()\n        {\n            InitializeComponent();\n            MainForm = this;\n        }\n\n        private void Form1_Load(object sender, EventArgs e)\n        {\n            Control.CheckForIllegalCrossThreadCalls = false;\n        }\n\n        \/\/\u5b9a\u4e49\u56de\u8c03\n        private delegate void SetTextCallBack(string strValue);\n        \/\/\u58f0\u660e\n        private SetTextCallBack setCallBack;\n\n        \/\/\u5b9a\u4e49\u63a5\u6536\u670d\u52a1\u7aef\u53d1\u9001\u6d88\u606f\u7684\u56de\u8c03\n        private delegate void ReceiveMsgCallBack(string strMsg);\n        \/\/\u58f0\u660e\n        private ReceiveMsgCallBack receiveCallBack;\n\n        \/\/\u521b\u5efa\u8fde\u63a5\u7684Socket\n        Socket socketSend;\n        \/\/\u521b\u5efa\u63a5\u6536\u5ba2\u6237\u7aef\u53d1\u9001\u6d88\u606f\u7684\u7ebf\u7a0b\n        Thread threadReceive;\n\n        \/\/\u5df2\u88c5\u7bb1\u6570\u91cf\uff08\u7bb1\u6570\uff09\n        int have_box=0;\n        \/\/\u73b0\u5728\u6709\u7684\u7bb1\u6570\n        int now_box;\n        \/\/\u8fde\u63a5\n        private void Connect_Click(object sender, EventArgs e)\n        {\n            try\n            {\n                socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);\n                IPAddress ip = IPAddress.Parse(this.txt_IP.Text.Trim());\n                socketSend.Connect(ip, Convert.ToInt32(this.txt_Port.Text.Trim()));\n                \/\/\u5b9e\u4f8b\u5316\u56de\u8c03\n                setCallBack = new SetTextCallBack(SetValue);\n                receiveCallBack = new ReceiveMsgCallBack(SetValue);\n                this.txt_Log.Invoke(setCallBack, \"\u8fde\u63a5\u6210\u529f\");\n\n                \/\/\u5f00\u542f\u4e00\u4e2a\u65b0\u7684\u7ebf\u7a0b\u4e0d\u505c\u7684\u63a5\u6536\u670d\u52a1\u5668\u53d1\u9001\u6d88\u606f\u7684\u7ebf\u7a0b\n                threadReceive = new Thread(new ThreadStart(Receive));\n                \/\/\u8bbe\u7f6e\u4e3a\u540e\u53f0\u7ebf\u7a0b\n                threadReceive.IsBackground = true;\n                threadReceive.Start();\n            }\n            catch (Exception ex)\n            {\n                MessageBox.Show(\"\u8fde\u63a5\u670d\u52a1\u7aef\u51fa\u9519:\" + ex.ToString());\n            }\n        }\n\n        \/\/\/ \u63a5\u53e3\u670d\u52a1\u5668\u53d1\u9001\u7684\u6d88\u606f\n        private void Receive()\n        {\n            try\n            {\n                while (true)\n                {\n                    byte[] buffer = new byte[2048];\n                    \/\/\u5b9e\u9645\u63a5\u6536\u5230\u7684\u5b57\u8282\u6570\n                    int r = socketSend.Receive(buffer);\n                    if (r == 0)\n                    {\n                        break;\n                    }\n                    else\n                    {\n                        \/\/\u5224\u65ad\u53d1\u9001\u7684\u6570\u636e\u7684\u7c7b\u578b\n                        if (buffer[0] == 0)\/\/\u8868\u793a\u53d1\u9001\u7684\u662f\u6587\u5b57\u6d88\u606f\n                        {\n                            string str = Encoding.Default.GetString(buffer, 1, 2);\n                            int now_box = int.Parse(str);\n                            if (now_box==8)\n                            {\n                                string strMsg1 = \"\u88c5\u914d\u5b8c\u6210\uff0c\u6b63\u5728\u914d\u9001\";\n                                byte[] buffer2 = new byte[2048];\n                                buffer2 = Encoding.Default.GetBytes(strMsg1);\n                                int receive = socketSend.Send(buffer2);\n                                txt_Log.AppendText(System.Environment.NewLine+\"\u88c5\u914d\u5b8c\u6210\uff0c\u6b63\u5728\u914d\u9001\\n\" );\n                            }\n                            else\n                            {\n                                \/\/string temp = \"\u63a5\u6536\u8fdc\u7a0b\u670d\u52a1\u5668:\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\" + \"\u5df2\u751f\u4ea7\" + str + \"\u7bb1\u9632\u62a4\u670d\";\n                                this.txt_Log.Invoke(receiveCallBack, \"\u63a5\u6536\u8fdc\u7a0b\u670d\u52a1\u5668:\" + socketSend.RemoteEndPoint + \"\u53d1\u9001\u7684\u6d88\u606f:\"  + \"\u6b63\u5728\u751f\u4ea7\" + str );\n                                \/\/   this.txt_Log.AppendText( \"\u5df2\u751f\u4ea7\" + str + \"\u7bb1\u9632\u62a4\u670d\" + System.Environment.NewLine);\n                                int j = now_box;\n                                for (int i = 0; i &lt; j; i++)\n                                {\n                                    now_box--;\n                                    have_box++;\n                                    this.txt_Log.Invoke(receiveCallBack,  \"\u7bb1\u9632\u62a4\u670d\" + System.Environment.NewLine+\"\u88c5\u914d\u9632\u62a4\u670d\u4e2d......\");\n                                    pictureMove();\n\n                                    \n                                   \n                                    this.txt_Log.Invoke(receiveCallBack, \"\u5df2\u88c5\u914d\" + have_box + \"\u7bb1\" + \"\uff0c\" + \"\u5269\u4f59\" + now_box + \"\u7bb1\");\n                                }\n\n                                \/\/\u53d1\u9001\u5df2\u88c5\u914d\u6570\u91cf\u7ed9\u670d\u52a1\u7aef\n                                string strMsg = have_box.ToString();\n                                byte[] buffer1 = new byte[2048];\n                                buffer1 = Encoding.Default.GetBytes(strMsg);\n                                int receive = socketSend.Send(buffer1);\n                            }\n                            \n                        }\n                        \/\/\u8868\u793a\u53d1\u9001\u7684\u662f\u6587\u4ef6\n                        if (buffer[0] == 1)\n                        {\n                            SaveFileDialog sfd = new SaveFileDialog();\n                            sfd.InitialDirectory = @\"\";\n                            sfd.Title = \"\u8bf7\u9009\u62e9\u8981\u4fdd\u5b58\u7684\u6587\u4ef6\";\n                            sfd.Filter = \"\u6240\u6709\u6587\u4ef6|*.*\";\n                            sfd.ShowDialog(this);\n\n                            string strPath = sfd.FileName;\n                            using (FileStream fsWrite = new FileStream(strPath, FileMode.OpenOrCreate, FileAccess.Write))\n                            {\n                                fsWrite.Write(buffer, 1, r - 1);\n                            }\n\n                            MessageBox.Show(\"\u4fdd\u5b58\u6587\u4ef6\u6210\u529f\");\n                        }\n                    }\n\n\n                }\n            }\n            catch (Exception ex)\n            {\n                MessageBox.Show(\"\u63a5\u6536\u670d\u52a1\u7aef\u53d1\u9001\u7684\u6d88\u606f\u51fa\u9519:\" + ex.ToString());\n            }\n        }\n\n        private void SetValue(string strValue)\n        {\n            this.txt_Log.AppendText(strValue + \"\\r \\n\");\n        }\n\n        \/\/\u5ba2\u6237\u7aef\u7ed9\u670d\u52a1\u5668\u53d1\u9001\u6d88\u606f\n        \/\/private void Send_Click(object sender, EventArgs e)\n        \/\/{\n        \/\/    try\n        \/\/    {\n        \/\/        string strMsg = this.txt_Msg.Text.Trim();\n        \/\/        byte[] buffer = new byte[2048];\n        \/\/        buffer = Encoding.Default.GetBytes(strMsg);\n        \/\/        int receive = socketSend.Send(buffer);\n        \/\/    }\n        \/\/    catch (Exception ex)\n        \/\/    {\n        \/\/        MessageBox.Show(\"\u53d1\u9001\u6d88\u606f\u51fa\u9519:\" + ex.Message);\n        \/\/    }\n        \/\/}\n\n        \/\/\u65ad\u5f00\u8fde\u63a5\n        private void CloseConnect_Click(object sender, EventArgs e)\n        {\n            \/\/\u5173\u95edsocket\n            socketSend.Close();\n            \/\/\u7ec8\u6b62\u7ebf\u7a0b\n            threadReceive.Abort();\n        }\n\n        \/\/public partial class Form1 : Form\n        \/\/{\n        \/\/    public static Form1 mainFrm;\n        \/\/    public Form1()\n        \/\/    {\n        \/\/        mainFrm = this;\n        \/\/    }\n        \/\/}\n       \n        public static void pictureMove()\n        {\n            \/\/ Form1.MainForm.pictureBox1.Visible = true;\n            \/\/Form1.MainForm.pictureBox2.Show();\n            for (int i = 0; i &lt; 6; i++)\n            {\n                DateTime orinowTime = DateTime.Now;\/\/\u8bb0\u5f55\u5ef6\u65f6\u5f00\u59cb\u7684\u7cfb\u7edf\u5f53\u524d\u65f6\u95f4\n                while (orinowTime.AddSeconds(0.6).CompareTo(DateTime.Now) >= 0)\n                {\n                }\n                Form1.MainForm.pictureBox1.Left += 80;\n\n            }\n            Form1.MainForm.pictureBox1.Visible = false;\n            Form1.MainForm.pictureBox1.Left =81;\n            Form1.MainForm.pictureBox1.Visible = true;\n\n\n            Form1.MainForm.pictureBox2.Show();\n            DateTime orinowTim = DateTime.Now;\/\/\u8bb0\u5f55\u5ef6\u65f6\u5f00\u59cb\u7684\u7cfb\u7edf\u5f53\u524d\u65f6\u95f4\n            while (orinowTim.AddSeconds(0.5).CompareTo(DateTime.Now) >= 0)\n            {\n                \/\/Form1.MainForm.pictureBox2.Visible = true;\n            }\n            Form1.MainForm.pictureBox2.Hide();\n            \/\/Form1.MainForm.pictureBox2.Visible = true;\n            \/\/DateTime orinowTim = DateTime.Now;\/\/\u8bb0\u5f55\u5ef6\u65f6\u5f00\u59cb\u7684\u7cfb\u7edf\u5f53\u524d\u65f6\u95f4\n            \/\/while (orinowTim.AddSeconds(1).CompareTo(DateTime.Now) >= 0)\n            \/\/{\n            \/\/    \/\/Form1.MainForm.pictureBox2.Visible = true;\n            \/\/}\n            \/\/Form1.MainForm.pictureBox2.Visible = false;\n\n        }\n\n       \n        private void button1_Click_1(object sender, EventArgs e)\n        {\n            pictureMove();\n        }\n    }\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u63a7\u5236\u4e2d\u5fc3 \u751f\u4ea7\u8f66\u95f4 \u8fd0\u8f93\u4e2d\u5fc3<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,1],"tags":[],"class_list":["post-160","post","type-post","status-publish","format-standard","hentry","category-10","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/160","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/comments?post=160"}],"version-history":[{"count":1,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/160\/revisions"}],"predecessor-version":[{"id":161,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/posts\/160\/revisions\/161"}],"wp:attachment":[{"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/media?parent=160"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/categories?post=160"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dirx.com.cn\/index.php\/wp-json\/wp\/v2\/tags?post=160"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}