Java сокет программа не может читать большое количество данных одновременно - PullRequest
0 голосов
/ 24 апреля 2009

Я написал программу для сокетов, используя read() и write(). Всякий раз, когда я хочу отправить большие данные, используя write(). Я не могу получить данные одновременно. Означает, что мои данные разделены на два раздела, так как я могу отправить большой объем данных? или прочитать данные за 1 раз?

Также я не могу знать, является ли это проблемой write() или read()

Спасибо Бапите

1 Ответ

2 голосов
/ 24 апреля 2009

read () гарантированно читает только 1 байт, все, что больше, это бонус.

Распространенный способ справиться с этим - использовать DataOutputStream и DataInputStream для отправки требуемого размера «блока».

public static void write(DataOutput out, byte[] bytes) throws IOException {
    out.writeInt(bytes.length);
    out.write(bytes);
}

public static byte[] read(DataInput in) throws IOException {
    int len = in.readInt();
    byte[] bytes = new byte[len];
    in.readFully(bytes);
    return bytes;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...