Программа Java Socket не может читать данные, если сервер отправляет данные, используя запись, и получает данные, используя readUTF (). - PullRequest
1 голос
/ 23 апреля 2009

Я написал программу для сокетов, в которой клиент использует readUTF() и writeUTF() для связи с сервером, а сервер использует read () и write () для связи с клиентом.

Мой сервер может читать все данные, поступающие с сервера. Я использую write () на стороне сервера и readUTF () на стороне клиента.

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

Что нужно сделать, чтобы обеспечить передачу всех данных?

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

Не используйте readUTF и writeUTF в этом сценарии. Вместо этого читайте и записывайте байтовые массивы:

read(byte [] b)

Затем преобразуйте байтовый массив в строку, используя соответствующий конструктор строки:

public String(byte[] bytes,
              String charsetName)

Вам следует попробовать перехватить исключения UnsupportedEncodingException.

0 голосов
/ 23 апреля 2009

Обратите внимание, что readUTF и writeUTF используют измененную форму UTF. Я не знаю, что вы отправляете, используя read () и write () на сервере, но вы должны убедиться в совместимости между тем, что ожидает клиент, и тем, что ожидает сервер.

Я бы отправлял / получал и клиент, и сервер одним и тем же способом. Я не знаю, является ли это причиной вашей проблемы, но это избавит вас от некоторого несвязанного горя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...