System.Diagnostics.Process里
使用 netstat -an看看把

解决方案 »

  1.   

     public void StartListen(System.Windows.Forms.Control owner, Action<IPEndPoint, string> ProcessTcpCommand)
            {
                _owner = owner;            GetTcpMessage = ProcessTcpCommand;
                tcpListenerThread = new Thread(TcpListenHandler);
                tcpListenerThread.IsBackground = true;
                tcpListenerThread.Start();
            } private void TcpListenHandler()
            {
                tcpListener = new TcpListener(IPAddress.Any, global.TcpPort);
                IPEndPoint iep;
                tcpListener.Start();            while (isListening)
                {
                    //异步方式接受
                    //tcpListener.BeginAcceptTcpClient();
                    
                    System.Threading.Thread.Sleep(200);
                    if (tcpListener.Pending())
                    {
                        TcpClient tcpRecivceClient = tcpListener.AcceptTcpClient();                    NetworkStream netStream = tcpRecivceClient.GetStream();
                        byte[] buffer = new byte[1024];
                        if (!netStream.DataAvailable)
                            continue;
                        List<byte> bufferTotal = new List<byte>();
                        while (netStream.DataAvailable)
                        {
                            netStream.Read(buffer, 0, 1024);
                            bufferTotal.AddRange(buffer);
                        }
                        iep = (IPEndPoint)tcpRecivceClient.Client.RemoteEndPoint;                    tcpRecivceClient.Close();
                        netStream.Close();
                        string receive = System.Text.Encoding.UTF8.GetString(bufferTotal.ToArray());
                        _owner.Invoke(GetTcpMessage, new object[] { iep, receive });
                    }
                }
                tcpListener.Stop();
            }