C#TcpListener没有监听

时间:2018-08-01 05:45:13

标签: c# winforms networking tcp tcplistener

我尝试实现给定的here代码。但是我无法连接到设备。客户端设备运行正常,因为我尝试使用其他能够读取数据的软件。

我有以下代码:

    private void ReceivePortMessages()
    {
        _TcpListener = new TcpListener(IPAddress.Any, 23);

        byte[] receiveBuffer = new byte[6400];
        while (!_QuitProcessing)
        {
            int requestCount = 0;
            _TcpListener.Start();
            Console.WriteLine(" >> Listener Started");

            using (var tcpClient = _TcpListener.AcceptTcpClient())
            {
                Console.WriteLine(" >> Accepted connection from client");

                using (var networkStream = tcpClient.GetStream())
                {
                    while (!_QuitProcessing)
                    {
                        try
                        {
                            requestCount = requestCount++;
                            var bytesRead = networkStream.Read(receiveBuffer, 0, (int)tcpClient.ReceiveBufferSize);
                            if (bytesRead == 0)
                            {
                                // Read returns 0 if the client closes the connection
                                break;
                            }

                            string dataFromClient = System.Text.Encoding.ASCII.GetString(receiveBuffer, 0, bytesRead);
                            Console.WriteLine(dataFromClient);

                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("ReceivePortMessages: " + ex.ToString());
                            break;
                        }
                    }
                }
                Console.WriteLine(" >> stopped read loop");
            }
            _TcpListener.Stop();
        }
    }

而我使用的是它:

Thread thread = new Thread(ReceivePortMessages);
thread.IsBackground = true;
thread.Start();

它打印>> Listener Started。此后什么也没打印。

AcceptTcpClient()从未被呼叫。

有人可以告诉我如何解决吗?

我还想知道其他软件何时可以使用其IP地址连接到设备,为什么当我使用类似IPAddress.Parse("192.168.0.100")的IP而不是IPAddress.Any时,我的程序为什么抛出以下错误:

  

TCP Client:Exception:请求的地址在其上下文中无效

编辑#1

这是针对Winforms的。所以基本上我有一个条形码读取器,可以将数据扔到以太网上。我想在程序中读取此数据。当前,我只是尝试连接到它并打印Console中的值。这是我当前代码的链接:

Link to gist

0 个答案:

没有答案