缓冲读取器从用户输入返回意外字符

我有一个多聊天服务器客户端程序,我试图在telnet腻子窗口中从客户端获取输入。 提示:

String login = "2-Enter username and a password:";
        clientoutput.write((login).getBytes());

用户输入:

缓冲读取器从用户输入返回意外字符

这是由BufferedReader读取的:

 BufferedReader br = new BufferedReader(new InputStreamReader(clientInput));
        String inputLine;
        String returnmessage;
        while ((inputLine = br.readLine()) != null) {

            // Split input line with space as delimiter using import jar
            String[] words = StringUtils.split(inputLine);

            // Ensure we don't get a null pointer
            if (words != null && words.length > 0) {
                String command = words[0];

            if ("logoff".equalsIgnoreCase(command) || "q".equalsIgnoreCase(command) || "quit".equalsIgnoreCase(command)) {
                logOff();
                break;
                }else 
                    // Log user in
                    try {
                        clientLogIn(clientoutput,words);
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

            }

但是,用户输入的第一个单词始终读为

  

ÿû

eclipse控制台输出:

  

用户ÿû已登录

所以我的问题是ÿû这个字符是从哪里来的,可以解决吗?

我正在使用Windows 10和eclipse版本:2019-03(4.11.0) 版本号:20190314-1200

其他信息: 我试图捕获用户输入并直接打印到控制台:

if (login.contains("ÿû")) {
            login = login.substring(1);
            System.out.println("New login after removal of unxepected char: " + login);
        } else {
            System.out.println("User eneterd login : " + login);

        }

输出:

  

用户输入的登录名:-输入用户名和密码:

     

用户ÿû已登录 // //输入第一个单词后

hahaquanquan 回答:缓冲读取器从用户输入返回意外字符

  1. 您获得了telnet协议特殊字节0xff (IAC)0xfb (WILL)
  2. 如果您需要在应用程序中避免使用它,请使用此specification(您需要的部分是“ TELNET COMMAND STRUCTURE”)来跳过协议专用字节。
,

由于您实际上是在编写自己的协议,因此问题似乎是您使用了错误的 client 来测试服务器。

也就是说,telnet并不意味着它是一个通用的TCP客户端,因为它会在您尝试发送的实际数据旁边发送命令。而且,它适用于字节,而不适用于Java字符串(当您尝试在字符串开头检查那些奇怪的字符时会注意到这一点)。

如果您使用netcat之类的代码来测试代码,则可以完全避免该问题。

本文链接:https://www.f2er.com/3096153.html

大家都在问