代码:
        
         public void State()
        {
            try
            {
                mythread = new Thread(new ThreadStart(BeginListen));
                mythread.Start();
            }
            catch (Exception ex)
            {
                eventLog_SendWorks.WriteEntry("监听端口线程启动错误提示:" + ex.Message, EventLogEntryType.Error);
            }
        }
         public void Close()
        {
             try
            {
                //System.Environment.Exit(System.Environment.ExitCode);                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
                mythread.Abort();
            }
            catch (ObjectDisposedException ex)
            {
                eventLog_SendWorks.WriteEntry("ObjectDisposedException错误!:"+ex.Message,EventLogEntryType.Error);
            }
            catch (Exception ex)
            {
                
                eventLog_SendWorks.WriteEntry("关闭Socket和Thread是出错:" + ex.Message, EventLogEntryType.Error);
            }
        }
         public static IPAddress GetServerIP()
        {
            IPHostEntry ieh = Dns.GetHostEntry(Dns.GetHostName());             //获取本地主机的地址
            return ieh.AddressList[0];
        }
        private void BeginListen()
        {
            IPAddress ServerIp = GetServerIP();
            IPEndPoint iep = new IPEndPoint(ServerIp, 8000);
            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            byte[] byteMessage = new byte[1024];            socket.Bind(iep);            while (true)
            {
                try
                {
                    socket.Listen(5);
                    Socket newSocket = socket.Accept();
                    newSocket.Receive(byteMessage);                    newSocket.Shutdown(SocketShutdown.Both);
                    newSocket.Close();                    string msg = Encoding.Default.GetString(byteMessage);
                    msg = msg.Substring(0, 13);
                    if (msg == "ProWorkUpdate")
                    {
                        try
                        {
                            eventLog_SendWorks.WriteEntry("数据库更新,更新数据!");
                            this.timer_SendMessage.Enabled = false;                            if (SendTable != null)
                            {
                                SendTable.Clear();
                            }
                            dtTable = GetData();                                     //从数据库中读取在某一段是时间间内可能要发的事务信息
                            OperationDataTable();                                    //向发送事务表(SendTable)中添加数据                            this.timer_SendMessage.Enabled = true;
                        }
                        catch (Exception ex)
                        {
                            eventLog_SendWorks.WriteEntry("触发数据更新时出错:" + ex.Message);
                        }
                        //lbl_BeginInvoke.BeginInvoke(new InvokeDelegateReadData(ReadData));
                    }
                    //Thread.Sleep(1000);
                }
                catch (SocketException ex)
                {
                    //MessageBox.Show(ex.Message, "Socket错误提示!");
                    eventLog_SendWorks.WriteEntry("Socket连接错误提示:" + ex.Message,EventLogEntryType.Error);
                }
            }
        }