проблема с записью больших данных с использованием сокета java nio - PullRequest
0 голосов
/ 18 мая 2009

Я могу отправлять небольшие данные, используя java nio.

Но если я хочу отправить очень большие данные, мой канал сокета не работает нормально.

message = "very large data"+"\n";
ByteBuffer buf = ByteBuffer.wrap(message.getBytes());
int nbytes = channel.write(buf);

все данные отправлены.

Я хочу прочитать данные с сервера, поэтому я использую BufferedInputStreaReader.readLine (); В этом случае я не получаю никакой ошибки, и я не могу получить любые данные, которые я отправил

Спасибо Дипак

1 Ответ

1 голос
/ 18 мая 2009
write()

Returns:
The number of bytes written, possibly zero 

Запись не гарантирует запись всего вашего буфера. Вам нужно проверить, сколько было написано, и сделать еще одну запись. (Возможно, также подождите (выберите), пока вы не сможете написать снова.)

Возможно, вам также стоит поискать хороший учебник по java.nio ... Если вам нужен более простой API, используйте блокировку io в java.io вместо ...

...