【问题标题】:advanced socket byte reading for slow connection用于慢速连接的高级套接字字节读取
【发布时间】:2011-11-06 08:04:04
【问题描述】:

我只是想问一个简单的菜鸟问题可能...... 如果连接速度很慢并且不建议一次读取整个字节... 那么什么是最好的套接字读取算法呢?

由于我在读取套接字时经历过几次,有时字节流没有完全传输并使其成为无效数据...

目前我正在像这样读取我的套接字:

byte[] message = new byte[lengthOftheByte];
byte buffer = 0;
int count = 0;
while(count < lengthOftheByte) {
  int read = myInputStream.read();
  buffer = (byte) read;
  message[count] = buffer;
  count++;
}

它读取单个字节,然后将其放入数组的元素中 它适用于单个读取进程,但不适用于线程中...... :(

【问题讨论】:

  • “但不在线程内”是什么意思?你的问题不是很清楚...
  • 它使它成为无效数据,因为您存储读取的字节并继续从流中读取,即使已到达末尾。您应该始终测试读取的结果,如果它是 -1 则停止。

标签: java sockets inputstream


【解决方案1】:

使用read(byte[])BufferedInputStream。但是,建议将此技术用于所有连接,而不仅仅是慢速连接。如果您的连接速度较慢,因此您受输入限制,那么您对代码无能为力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    相关资源
    最近更新 更多