如何一次一个地写入TelnetOutputStream中的字符?

时间:2012-04-06 14:45:03

标签: java apache-commons telnet outputstream

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

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

我希望我的数据一次只能由一个字符发送,但Wireshark显示第一个字符是单独发送的,剩下的字符一起发送。 为什么我会遇到这种情况?如何逐个字符地发送数据?

3 个答案:

答案 0 :(得分:1)

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

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

使用整个阵列调用write。你应该NEWER EVER一次写一个字节。同时写整个数组会快得多。

写完后调用flush()。

这是发送数据的最快方式,也是创建最小延迟的方法。也就是说:一次发送一个字节将无法确保服务器能够更快地接收它们。

一次发送一个字节的数据会降低你的速度,而不是加快速度。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果你真的想一次发送一个字符(为什么,它会让你慢下来)我想你必须迭代数组并每次用一个字节调用write。然后在每次写入后刷新。像(没有测试,但它应该给你一个提示)。

OutputStream os=TelnetClient.getOutputStream();
for(int i=0;i!=array.length;i++) {
  os.write(array[i]);
  os.flush();
}