Как отправить массив String Object через сокет?

У меня есть объект массива String. Допустим

String[] names = new String[7];

И я также делаю этот объект постоянным, сохраняя его в файл, используя ObjectOutputStream в моей клиентской системе. Я читаю сохраненный объект, используя ObjectInputStream. До этого Хорошо. Теперь я хочу отправить этот объект в другую систему через сокет.

Как это сделать? Пожалуйста помоги. Благодарю.

3 ответа

Решение

Вы должны создать экземпляр Socket
получить выходной поток и записать в него (например, с помощью ObjectOutputStream).

Socket echoSocket = new Socket(hostName, portNumber);
ObjectOutputStream out = new ObjectOutputStream(echoSocket.getOutputStream());
out.writeObject(names);  

Вы можете найти пример в Oracle docs: пример.
Также этот ответ должен быть полезным для вас

Объект String Array реализует интерфейс Serializable, поэтому его можно передавать по сети в виде потока байтов:

Socket socket = new Socket(host, port);
ObjectOutputStream outputStream = new ObjectOutputStream(
                socket.getOutputStream());
String[] names = new String[1]; // Empty at the moment
outputStream.writeObject(names); 

Чтобы ответить на ваш вопрос: в Java Array и String являются сериализуемыми типами, поэтому массив строк можно преобразовать в строку (!), Отправить по сети и затем десериализовать (преобразовать обратно в объект). Смотрите: Как сериализовать объект в java, но вместо этого я предлагаю преобразовать ваши данные в xml, json или любой другой транспортный формат данных и затем отправить его в виде строки. Это избавит вас от многих проблем.

Чтобы пойти еще дальше - вместо того, чтобы отправлять данные на очень низком уровне (сокеты, потоки и т. Д.), Я бы предложил создать сервис более высокого уровня и вызвать его через http. Фреймворки, такие как restlet или Spring remoting, легко настраиваются.

Другие вопросы по тегам