Передача файла и дополнительных данных через tcp (Java) - PullRequest
1 голос
/ 23 октября 2011

Я хотел бы передать файл и некоторые дополнительные данные через сокет TCP.Было бы очень хорошо, если бы я мог сделать это за один раз, не разбивая данные на несколько передач.

Что-то вроде

String data = "some data to be transferred";
File f = new File("myfile");
byte[] fileData = ... //read bytes from file
out.write(data + fileData);        //out is some OutputStream

Теперь, какой выходной поток я бы лучше использовал?для этого?Как я могу разделить данные и содержимое файла на принимающей стороне?

РЕДАКТИРОВАТЬ: у меня уже есть клиент и сервер tcp, оба с использованием PrintWriter и BufferedInputReader.Единственные данные, переданные до сих пор, - это простые строки.Я ищу простой способ интеграции передачи файлов.

1 Ответ

2 голосов
/ 23 октября 2011

Поскольку это протокол TCP, вы знаете, что данные всегда передаются и поступают в том же порядке, в котором они были отправлены.Зная, что и в каком порядке вы отправили данные, вы можете просто «распаковать» отправленные данные в том же порядке, в котором вы их отправили.

Другое решение - заключить содержимое в объект, который реализует сериализуемый.Если вы используете эту технику, вам не нужно беспокоиться об упаковке и распаковке, так как сериализация сделает это за вас. Вот пример , использующий это.

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