Связь TCP-сокета между родительскими и дочерними блоками процессов через несколько секунд (несколько сотен байт)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Связь TCP-сокета между родительскими и дочерними блоками процессов через несколько секунд (несколько сотен байт)

Сообщение Anonymous »

Для автоматизации тестирования моя программа запускает установщик (= дочерний процесс):

Код: Выделить всё

Runtime.getRuntime().exec(new String[] { "installer.exe", "-J-javaagent:myagent.jar" });
Установщик запускается, агент успешно инициализируется и запускает ServerSocket.

Код: Выделить всё

java.net.Socket socket = new java.net.ServerSocket(44444).accept();
Затем моя программа успешно подключается к агенту:

Код: Выделить всё

java.net.Socket socket = new java.net.Socket("localhost", 44444);
После 1–3 циклов запроса/ответа агент блокируется во время вызова Socket.write, а моя программа блокируется во время вызова Socket.read.
Однако, если я запускаю установщик с помощью cmd /c start (= независимый процесс), все работает как положено:

Код: Выделить всё

Runtime.getRuntime().exec(new String[] { "cmd", "/c", "start", "installer.exe", "-J-javaagent:myagent.jar" });
Итак, TCP-сокет разрывается после нескольких байтов, если существует связь между родительским и дочерним процессами, но работает, если процессы независимы. Кто-нибудь знает, что здесь происходит?
Возможно, это связано с: Связь через TCP-сокет C++. Соединение работает должным образом, через пару секунд происходит сбой, новые данные не принимаются и блок read() и Recv()

Подробнее здесь: https://stackoverflow.com/questions/790 ... -a-few-sec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»