现在对方发一个大包(80k)就报错,对方说是我这边不能接收导致的。我这边用while循环去读他的,每次循环的结果如下(我的日志):
dataThisTimeRead:2044
dataThisTimeRead:10220
dataThisTimeRead:2920
累加起来不过收了十多k,就收不到了,然后read函数就一直在等待超时。(我先读出了他的包长是80多k)
急问:往socket写东东,一次最多多少byte能成功发送?这种情况是对方的问题还是我这边的问题?谢谢

解决方案 »

  1.   

    byte[] receivedData;
    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;
                        ..........}这是我读的代码。对方发送的代码我不知道怎样的。
    谢谢
      

  2.   

    应该不是socket要传多少东东的问题,可能是网络问题,也可能是其他问题
      

  3.   

    一般都是以1024个byte来传送
    byte[] line = new byte[1024]然后把line传达
      

  4.   

    最大65xxx左右
    80k当然报错
    考虑兼容性一般机器可以接收5120的包
    读的时候用in.available() >0循环