Как отправить массив 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, легко настраиваются.