Во-первых, я совсем новичок в использовании сокет-связи, поэтому есть еще кое-что, чего я не знаю. Я понимаю основы взаимодействия с сокетом в Java, поэтому ищу руководство здесь.
Теперь, по поводу моей проблемы, мне нужно будет создать соединение сокета сервера с удаленным приложением. В моем приложении я буду запускать serverSocket, с которым клиент другого приложения будет связываться со мной. Часть протокола, реализованного для этого взаимодействия, заключается в том, что этот сокет должен постоянно открываться, что обеспечивает нам один вечный канал связи между обоими приложениями.
Пока ничего особенного. Проблема в том, что мне нужно использовать mi serverSocket, чтобы начать разговор с Клиентом. Это означает, что мой serverSocket должен будет отправить некоторую информацию клиенту без запроса клиента об этом.
Для определения я понимаю, что serverSockets - это потоки, которые ждут, пока Клиент откроет соединение с ними, после того, как это соединение установлено, диалог между приложениями обычно начинается с некоторого запроса (то есть символа ENQ) от Клиента, чтобы запустить обмен информацией; это для случаев, когда существует некоторый протокол для проверки, отправки и получения данных. В противном случае информация отправляется клиентом без тщательной проверки и контроля.
В нормальном случае моя проблема была бы решена более естественным образом, если бы мое приложение могло использовать Клиент для связи с сокетом server на удаленном приложении. Но это не так. Удаленное приложение не может иметь serverSocket, оно может иметь только Client (не спрашивайте меня, почему, это приложение делового партнера, а не мое, и на данный момент они не хотят менять свою схему связи).
Имея это в виду, мой вопрос таков: есть ли способ, с помощью которого я могу использовать свой работающий и ожидающий serverSocket для отправки некоторой информации из моего приложения на удаленный клиент, когда процесс в моем приложении необходим? как я вызываю из третьего компонента в моем приложении открытый сокет в serverSocket для записи на него?