我正在使用apache.commons.net.telnet
。
我有char[] array
。我打电话给TelnetClient.getOutputStream().write(array[i]).
我希望我的数据一次只能由一个字符发送,但Wireshark显示第一个字符是单独发送的,剩下的字符一起发送。 为什么我会遇到这种情况?如何逐个字符地发送数据?
答案 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();
}