0

我正在使用apache.commons.net.telnet.

我有char[] array。我打电话TelnetClient.getOutputStream().write(array[i]).

我希望我的数据一次发送一个字符,但 Wireshark 显示第一个字符单独发送,其余字符一起发送。为什么会出现这种情况,如何逐个字符发送数据?

4

3 回答 3

1

好的。这是正确的答案。要尽快发送数据,请执行以下操作:

在您的输出流上调用 setTcpNoDelay(true)。

用你的整个数组调用 write。你应该更新一次写一个字节。同时写入整个数组会快得多。

写完后调用flush()。

这是发送数据的最快方式,也是产生最小延迟的方式。也就是说:一次发送一个字节并不能确保服务器更快地接收它们。

一次发送一个字节的数据会减慢您的速度,而不是加快速度。

于 2012-04-06T15:58:42.680 回答
0

您是否尝试flush()在每次调用 write() 后调用?

flush()函数应该在缓冲区被填充之前发送流中的任何内容。

于 2012-04-06T14:52:09.753 回答
0

如果您真的想一次发送一个字符(为什么,它真的会减慢您的速度)我想您必须遍历数组并每次调用 write 一个字节。然后在每次写入后刷新。类似的东西(未经测试,但它应该给你一个提示)。

OutputStream os=TelnetClient.getOutputStream();
for(int i=0;i!=array.length;i++) {
  os.write(array[i]);
  os.flush();
}
于 2012-04-06T14:52:21.727 回答