现在对方发一个大包(80k)就报错,对方说是我这边不能接收导致的。我这边用while循环去读他的,每次循环的结果如下(我的日志):
dataThisTimeRead:2044
dataThisTimeRead:10220
dataThisTimeRead:2920
累加起来不过收了十多k,就收不到了,然后read函数就一直在等待超时。(我先读出了他的包长是80多k)
急问:往socket写东东,一次最多多少byte能成功发送?这种情况是对方的问题还是我这边的问题?谢谢
dataThisTimeRead:2044
dataThisTimeRead:10220
dataThisTimeRead:2920
累加起来不过收了十多k,就收不到了,然后read函数就一直在等待超时。(我先读出了他的包长是80多k)
急问:往socket写东东,一次最多多少byte能成功发送?这种情况是对方的问题还是我这边的问题?谢谢
int dataSize;
dataSize = in.readInt();// 注意:recievedata 不包含消息包长度这四个字节
logger.info("len from server:" + dataSize);
receivedData = new byte[dataSize - 4];
int dataTotalSizeToRead = dataSize - 4;
int dataToReadLeft = dataSize - 4;
int dataThisTimeRead;
while (dataToReadLeft > 0) {
// 一直读到指定数目的字节为止
dataThisTimeRead = in.read(receivedData, dataTotalSizeToRead
- dataToReadLeft, dataToReadLeft);
dataToReadLeft -= dataThisTimeRead;
..........}这是我读的代码。对方发送的代码我不知道怎样的。
谢谢
byte[] line = new byte[1024]然后把line传达
80k当然报错
考虑兼容性一般机器可以接收5120的包
读的时候用in.available() >0循环