-4

我有一个读卡器,用于注册员工入口。它在离线和在线模式下工作

离线意味着它存储所有数据(比如一个月),通过 telnet 连接到计算机后,管理员发送“读取”命令,阅读器将一个月内存储的所有数据发回。

在在线模式下,读卡器再次通过 telnet 连接到计算机,每当有人向读卡器出示卡时,读卡器就会发送数据,应用程序会立即显示结果。

我怎么能解决这个问题?我也使用过异步套接字,但效果不佳。

任何帮助表示赞赏。

private void button3_Click(object sender, EventArgs e)
{
        string ip = Convert.ToString(IP_textBox.Text);
        TcpClient telnet = new TcpClient();
        telnet.Connect("172.16.0.133", 5010);

        //sending "read" to Device
        //string data = "read";

        //byte[] recieveData = new byte [32768];
        NetworkStream readStream = telnet.GetStream();
        if (readStream.CanWrite)
        {
            byte[] readData = System.Text.Encoding.ASCII.GetBytes("read");
            readStream.Write(readData, 0, readData.Length);
        }
        else
        {
            telnet.Close();
            readStream.Close();
            return;
        }
        if (readStream.CanRead)
        {
            byte[] recieveData = new byte[telnet.ReceiveBufferSize];


            readStream.Read(recieveData, 0, (int)telnet.ReceiveBufferSize);
            string out_string = Encoding.UTF8.GetString(recieveData);
            // System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            //string out_string = enc.GetString(recieveData, 0, recieveData.Length);
            MessageBox.Show("Im here");
        }
        else
        {
            telnet.Close();
            readStream.Close();
            return;
        }
}
4

1 回答 1

0

好吧,TELNET 是您必须遵守的协议。TcpClient仅仅连接到 TELNET 端口并发送命令是不够的。

你可能想看看这个:http ://social.msdn.microsoft.com/Forums/en-US/fd348022-7c71-4b08-9f94-999b18592d3e/developing-a-telnet-application-in-c

于 2013-07-03T10:10:29.007 回答