我正在使用apache.commons.net.telnet
.
我有char[] array
。我打电话TelnetClient.getOutputStream().write(array[i]).
我希望我的数据一次发送一个字符,但 Wireshark 显示第一个字符单独发送,其余字符一起发送。为什么会出现这种情况,如何逐个字符发送数据?
我正在使用apache.commons.net.telnet
.
我有char[] array
。我打电话TelnetClient.getOutputStream().write(array[i]).
我希望我的数据一次发送一个字符,但 Wireshark 显示第一个字符单独发送,其余字符一起发送。为什么会出现这种情况,如何逐个字符发送数据?
好的。这是正确的答案。要尽快发送数据,请执行以下操作:
在您的输出流上调用 setTcpNoDelay(true)。
用你的整个数组调用 write。你应该更新一次写一个字节。同时写入整个数组会快得多。
写完后调用flush()。
这是发送数据的最快方式,也是产生最小延迟的方式。也就是说:一次发送一个字节并不能确保服务器更快地接收它们。
一次发送一个字节的数据会减慢您的速度,而不是加快速度。
您是否尝试flush()
在每次调用 write() 后调用?
flush()
函数应该在缓冲区被填充之前发送流中的任何内容。
如果您真的想一次发送一个字符(为什么,它真的会减慢您的速度)我想您必须遍历数组并每次调用 write 一个字节。然后在每次写入后刷新。类似的东西(未经测试,但它应该给你一个提示)。
OutputStream os=TelnetClient.getOutputStream();
for(int i=0;i!=array.length;i++) {
os.write(array[i]);
os.flush();
}