【问题标题】:How to fix backspaces sent via Telnet to Inputstream in Java?如何修复通过 Telnet 发送到 Java 中的 Inputstream 的退格?
【发布时间】:2019-08-30 16:09:54
【问题描述】:

在我的 Java Chatserver 上,用户可以通过在消息前使用退格键来更改用户名。

我目前正在用 Java 编写聊天服务器和客户端。它工作得非常好,但我有一个烦人的“错误”,用户可以在没有用户名的情况下发送消息,方法是在消息前面使用退格键,因为 telnet 或使用的 BufferedReader-InputStream 正在消息字符串中保存退格键。

我尝试替换使用户无法更改拼写错误的退格。

我不知道接下来我应该尝试什么。

示例: Test>[10 backspaces]This is a test. 其他人收到消息This is a test.,但实际消息应该是Test:This is a test.

【问题讨论】:

  • 你可以尝试在消息上做String.trim()吗?它将删除前导和尾随空格(如果我没记错的话,包括退格和任何 Ascii 代码小于 0x20 的内容)
  • 显示的“Test:”前缀从何而来?客户端还是服务器?如果服务器,因此您的消息仅包含前导退格(不包括您不想丢失的前缀),则上述修剪空格的建议是一个很好的建议。
  • 从服务器应用前缀。我尝试修剪它正在工作。感谢您的解决方案!

标签: java sockets chat inputstream telnet


【解决方案1】:

这行代码部分解决了我的问题:

while (input.contains("\b")) input = input.replaceAll("^\b+|[^\b]\b", "");

【讨论】:

    猜你喜欢
    • 2012-08-04
    • 2011-05-08
    • 2020-08-16
    • 2017-04-30
    • 2020-09-08
    • 2017-10-30
    • 2016-05-15
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多