我尝试实现给定的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
中的值。这是我当前代码的链接: