![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Здравствуйте дорогие форумчане, прежде, чем бросать во все тяжкие, и посоветовать что либо, опишу конкретнее, что необходимо.
И так есть программа, которая должна отпрашивать, свободен ли порт и пытаться запустить внешнюю программу, как только порт будет занят, скажем так, пусть эта проверка происходит каждую секунду. Понятное дело, нельзя самому занимать порт, ибо его должна будет занять внешняя серверная программа, в том числе не нужно занимать и тут же высвобождать, ибо в это время есть риск, что внешняя программа не сможет занять корректно этот порт пока тот занят в целях проверки. Потому курсирующий здесь код не подходит. Нужно реально работающий быстро способ локально узнать, занят ли порт какой либо программой, или он свободен. Очень большая просьба, что код должен обязательно работать начиная с JAVA 1.3 ради обратной совместимости. Пожалуйста, помогите!!! Буду признателен за помощь! |
|||
|
||||
| pathfinder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 1 Всего: 10 |
1) просто коннектиться на указанный порт, только не забыть поднастроить таймауты у коннекта.
2) использовать утилиты целевой системы(например netstat), и парсить их вывод. |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Pathfinder, спасибо за ответ, про второе отметается, хотя идея неплохая, только каждую секунду метелить нетстат, не подобающе жирное самопожертвование
А первый метод, пожалуйста, дайте пример рабочий. То есть мне не нужно коннектиться к этому порту как таковому, это сделает внешняя программа, которую я запускаю, но мне средствами java надо проверить, открыт ли порт или нет, при этом самому его не занимая, то есть если даже открыт, то принять это всего лишь как факт и запустить программу, которая будет к этому порту подключаться. Буду очень признателен. |
|||
|
||||
| pathfinder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 1 Всего: 10 |
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Спасибо большое, только я как понимаю с таймаутом тут дело не вертися ;) а по умолчания он какой?
|
|||
|
||||
| pathfinder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 1 Всего: 10 |
Если коннект не удалось установить, то спим пол секунды, и по новой пытаемся законнектится
|
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Я это понял, не это меня интересовало, прежде чем слип станет действенным, предыдущая комманда должна завершиться, вот меня и интересовало, как долго тот ждёт, прежде чем уверенно завершит действие событием, что типа на порту нет ничего...
|
|||
|
||||
| pathfinder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 120 Регистрация: 3.3.2010 Репутация: 1 Всего: 10 |
Поскольку все работает локально(и сервер, и клиент) то работать будет все на ура. Проверял для сотни подключений, среднее время не больше 5 мсек(на каждую попытку соединиться и соответственно определения был коннект или нет).
Таймауты на соединение оказывается установить нельзя(по крайней мере в доках ничего не нашел). |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Спасибо огромное за ответ ;)
ПС>тут нарыл как раз с таймаутами http://java.sun.com/developer/technicalArt...rking/timeouts/ В конце статьи зип архив с готовым исходником класса timedSocket http://www.javaworld.com/jw-09-1999/timeou...-09-timeout.zip Это сообщение отредактировал(а) Viroman - 19.9.2010, 21:38 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |