2016-06-03 4 views
-1

Чтобы запустить мой сервер/клиент, я передаю клиент в качестве аргумента командной строки на сервер, и оба процесса являются startet.удаленная отладка сервера/клиентского приложения с помощью eclipse

java -cp bin this.is.an.example.server "java -cp C:\this\is\another\example\bin\client main.Client"

в попытке отладить его удобно я установил затмение, добавляя клиента в серверах работают конфигурации в качестве аргумента. Это сработало. К сожалению, таким образом я могу только отлаживать сервер. У меня не было доступа к клиенту во время выполнения, когда он запускается в другом процессе.

Так что я начал искать решение и нашел некоторые учебники, как это, например tutorial_1

Я добавил к моей командной строки java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client"

Для моего клиента в затмении я добавил, как показано на рисунке 6 в tuttorial, удаленная отладка.

Когда я отладки в затмении он говорит

Ожидание VM для подключения к порту 56111

, но ничего не происходит.

Так вот мои проблемы:

  1. я делаю это правильно? или есть другой, может быть, более простой способ отладки моего клиента? Какие-либо предложения?
  2. если удаленная отладка в порядке. можно ли начать удаленную отладку, передав аргумент моему серверу, который затем запускает клиент с Process process = Runtime.getRuntime().exec(command);?
+0

Кажется действительно неудобным, что вы запускаете клиент и сервер ** вместе **. Вся идея архитектуры клиент/сервер заключается в том, что эти два независимы друг от друга. Поэтому я поставил бы под сомнение ваше первое предложение. Вместо этого вы запускаете свой сервер. Затем вы начинаете свой клиент; и вы предоставляете клиенту IP-адрес и номер порта сервера; поэтому он может подключиться к этому серверу. Конечно, для первоначального тестирования IP и порт всегда одни и те же, поэтому необходимо настроить конфигурацию среды выполнения для вашего клиента в eclipse. – GhostCat

+0

Кроме того: установка и использование eclipse ** только для запуска ** java-проекты звучат как ** overkill **. Вы должны либо делать ** всю свою работу по разработке »от eclipse, либо вообще не использовать его. Если вы больше на« Я хочу научиться делать вещи без IDE »... тогда вы могли бы написать несколько стартеров скрипты для запуска клиента/сервера .... – GhostCat

+0

Да, действительно, это неудобно, но я унаследовал его таким образом и теперь должен найти способ заставить его работать ... снова. предположительно, он был/работает. Я назвал его сервером-клиентом потому что основная программа действует как «сервер», управляющая связью между всеми «клиентами» и, кстати, я не устанавливал eclipse для запуска «сервера/клиента», но для его отладки были и некоторые другие проблемы. – aldr

ответ

1

Просто читать: http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/conninv.html#Transports

В ситуациях, когда клиент прикрепляет к серверу, гнездо транспортного адреса имеют формат «:», где имя хоста и номер порта сокета на который он прикрепляет или слушает . В контексте, где сервер ожидает присоединения клиента, адрес состоит только из номера порта (имя хоста неявно).

И:

имя: адрес

требуется: да, если сервер = п нет, в противном случае

значение по умолчанию: ""

описание: Транспортный адрес для подключение. Если server = n, попробуйте подключиться к приложению отладчика на этот адрес. Если server = y, послушайте соединение по этому адресу.

Из моего понимания с таким вызовом:

java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client" 

клиент приложение имеет конфигурацию, чтобы попытаться подключиться к 127.0.0.1:56111. И от того, что я понял, вы хотите, чтобы отладить сервер, так что я думаю, вы должны изменить вызов к:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=56111,suspend=y -cp bin this.is.an.example.server "java -cp C:\this\is\another\example\bin\client main.Client" 

Однако, если клиентское приложение должно быть прослушивание подключений должно быть так:

java -cp bin this.is.an.example.server "java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=56111,suspend=y -cp C:\this\is\another\example\bin\client main.Client" 

Рассмотрите также изменение -Xrunjdwp на -agentlib: jwdp, если Java> = 5.0.

 Смежные вопросы

  • Нет связанных вопросов^_^