我正在使用apache.commons.net.telnet
。我有char[] array
。我打電話TelnetClient.getOutputStream().write(array[i]).
如何一次將一個字符寫入TelnetOutputStream?
我預計我的數據一次只能由一個字符發送,但Wireshark顯示第一個字符是單獨發送的,其餘字符一起發送。 爲什麼我會遇到這種情況,如何才能逐字發送我的數據?
我正在使用apache.commons.net.telnet
。我有char[] array
。我打電話TelnetClient.getOutputStream().write(array[i]).
如何一次將一個字符寫入TelnetOutputStream?
我預計我的數據一次只能由一個字符發送,但Wireshark顯示第一個字符是單獨發送的,其餘字符一起發送。 爲什麼我會遇到這種情況,如何才能逐字發送我的數據?
好的。這是正確的答案。爲了儘可能快地發送數據,請執行以下操作:
呼叫setTcpNoDelay(真)在你的輸出流。
用您的整個陣列調用寫入。您應該每次都寫一個字節。同時寫入整個陣列會快得多。
寫完後調用flush()。
這是發送數據的最快途徑,它也將創造至少延遲的方式。即:一次發送一個字節不會確保服務器能夠更快地接收它們。
在同一時間發送一個字節的數據會讓你放慢腳步,不加快速度。
你有沒有打過電話flush()
每次通話後寫的()?充滿緩衝之前
flush()
功能應在流中發送任何東西。
如果你真的想要一個發送字符在一個時間(爲什麼,它真的會減慢你的速度),我想你必須迭代這個數組並調用帶有一個單字節每次寫。然後在每次寫入後刷新。像(沒有測試過,但它應該給你一個提示)。
OutputStream os=TelnetClient.getOutputStream();
for(int i=0;i!=array.length;i++) {
os.write(array[i]);
os.flush();
}
您是否已經在write()之後嘗試Outputstream.flush()? – MartinK 2012-04-06 14:52:17
是的,我在'write()'後面調用'flush()'! – DenisM 2012-04-06 14:57:08