tcpClient连接远程主机冻结应用程序

时间:2015-03-02 00:49:05

标签: c# sockets tcpclient rfid

我使用套接字很新,我试图从端口1000上有原始流的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);
   }

显然,这段代码会等待一些命令写入远程主机,但我不需要写任何东西。我只是试图获取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应用程序中执行相同的操作时,应用程序会在循环中冻结几次。

1 个答案:

答案 0 :(得分:0)

您似乎没有将wline更新为循环内的流值。