这是一个相当复杂的问题,对此我深表歉意。我编写了一个 Linux C 套接字应用程序,这是一个用于简单聊天服务器的基本框架。服务器正在我的笔记本电脑上运行。客户端目前是 Telnet,直到我编写指定的客户端应用程序(希望这会更安全)。我知道,有更好的应用程序可以从客户端发送通用网络数据,但我对为什么某件事发生在一个 Telnet 客户端而不是另一个客户端感兴趣。
第一个 Telnet 客户端测试是在另一台 Linux 笔记本电脑上进行的。它按预期工作。然而,下一个是一个名为 BBSSH 的黑莓应用程序,它允许 Telnet 和 SSH 连接。我通过了 Telnet 选项,它也可以工作。除了,它不完全是。
服务器代码执行通常的read
调用来检索数据块,该数据块被视为字符串,即消息。前一个客户端读取直到我按回车键,然后它发送一串字符。但是,BB 应用程序会发送每个字符,就好像我在每个字符之后都按了 Enter 键一样,而我没有。显然,这与缓冲有关,某些客户端从用户输入中将其归类为 EOL 等。我只是无法确定它。
为了说明,这里是服务器输出它从客户端接收到的消息。
首先,来自 Linux 客户端的消息:
client name: this is a test
现在,对于 BBSSH:
client name: t
client name: h
client name: i
client name: s
client name:
client name: i
client name: s
client name:
client name: a
client name:
client name: t
client name: e
client name: s
client name: t
有什么帮助吗?