C# TCP客户端连接远程主机冻结应用程序
我是一个非常新的使用套接字的人,我正在尝试从RFID设备获取数据,该设备在端口1000上有一个原始流。找到了这段代码,我用这段代码在一个控制台应用程序上得到了这段代码C# TCP客户端连接远程主机冻结应用程序,c#,sockets,tcpclient,rfid,C#,Sockets,Tcpclient,Rfid,我是一个非常新的使用套接字的人,我正在尝试从RFID设备获取数据,该设备在端口1000上有一个原始流。找到了这段代码,我用这段代码在一个控制台应用程序上得到了这段代码 TcpClient tcpClient; NetworkStream networkStream; tcpClient = new TcpClient("10.19.1.101", 10000); networkStream = tcpClient.GetStream(); StreamReader
TcpClient tcpClient;
NetworkStream networkStream;
tcpClient = new TcpClient("10.19.1.101", 10000);
networkStream = tcpClient.GetStream();
StreamReader streamReader = new StreamReader(networkStream);
StreamWriter streamWriter = new StreamWriter(networkStream);
String wline = "";
while (wline != "exit")
{
Console.Write(streamReader.ReadLine());
Console.Write(Environment.NewLine);
Console.Write("next command:");
wline = Console.ReadLine();
streamWriter.Write(wline);
}
显然,这段代码等待在远程主机中编写一些命令,但我不需要编写任何东西。我只是想获取RFID设备发送的信息,基本上是一个RFID标签代码。标签代码可以在随机时间段内到达。实际上,我在前面的代码中注释了一些行,并且能够在到达控制台时打印标记代码
TcpClient tcpClient;
NetworkStream networkStream;
tcpClient = new TcpClient("10.19.1.101", 10000);
networkStream = tcpClient.GetStream();
StreamReader streamReader = new StreamReader(networkStream);
//StreamWriter streamWriter = new StreamWriter(networkStream);
String wline = "";
while (wline != "exit")
{
Console.Write(streamReader.ReadLine());
Console.Write(Environment.NewLine);
//Console.Write("next command:");
//wline = Console.ReadLine();
//streamWriter.Write(wline);
}
我认为这不是正确的方法,因为我没有控制while循环。有谁能指导我找到解决“问题”的正确途径或方法吗
编辑:我更改了代码,如下所示:
TcpClient tcpClient = new TcpClient("10.19.1.101", 10000);
NetworkStream networkStream = tcpClient.GetStream();
StreamReader streamReader = new StreamReader(networkStream);
while (tcpClient.Connected)
{
Console.WriteLine(streamReader.ReadLine();
}
奇怪的是,当我在winFrom应用程序中执行相同的操作时,应用程序在循环中运行几次后会冻结。似乎您没有将wline更新为循环中的流值。听起来您的应用程序非常简单,使用NetworkStream和TcpClient提供了太多的功能。最好是“保持简单”。尝试搜索一些直接使用Socket类并使用Socket.Receive()读取输入的C#代码示例。是否检查传入连接???可能是客户端应用程序没有将任何数据发送到流中?我在winForm应用程序中进行了一些测试,其中我有一个datagridview用于数据,似乎应用程序正在获取数据,但没有添加到datagridview。当我为循环使用一个计数器时,一个控件将对给定的数字执行一个给定的数字,之后所有的信息都会同时正确地添加到datagridview中。所以我想我的问题是循环。