Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Какая программа использует порт?


Автор: E_v_g 2.3.2007, 01:51
Исходные данные: номер порта и имя программы (серверная часть). Причем может быть несколько одновременно запущенных экземпляров сервера, слушающих разные порты. Требуется по номеру порта определить, слушает ли его сервер и если да, то закрыть программу-сервер. Как реализовать?

Автор: Matematik 2.3.2007, 10:53
http://rouse.drkb.ru/network.php#tcpstat

Автор: E_v_g 2.3.2007, 14:13
Видел уже что-то подобное. Вот выдержка из результата работы этой программы:

      127.0.0.1: | 27016 | ESTABLISHED  |               RS.exe | (3284)
      127.0.0.1: |  1847 | ESTABLISHED  |     RemoteClient.exe | (1868)


RS.exe - это мой сервер, RemoteClient.exe - это мой клиент. Они соединились по порту 92552. Чтой-то я не вижу в этом листинге моего порта...  smile 

Автор: dodik 3.3.2007, 01:07
не может быть порт 92552, их всево 65к с копейками

Автор: E_v_g 5.3.2007, 10:46
Почему же тогда с 92552 работает? Проверено!

Автор: MetalFan 5.3.2007, 11:34
Цитата(E_v_g @  5.3.2007,  10:46 Найти цитируемый пост)
Почему же тогда с 92552 работает? Проверено!

ага) работает. а что же не работать? ты какие компоненты используешь?
чаще всего порт задается в Integer, хотя в "кишках" происходит неявное преобразование в word.
в листинге и не будет "твоего" порта, если он > максимального значения двойного слова (65535).
смотри:
Код

procedure TForm1.btn1Click(Sender: TObject);
var
  lInt: Integer;
  lWord: Word;
begin
  lInt := 92552;
  lWord := lInt;
  ShowMessage( IntToStr( lWord) );
end;

легким движением твой 92552 превращается в 27016.

Автор: W1zArD 5.3.2007, 15:35
htons
htonl
WinSock.pas

Автор: aktuba 5.3.2007, 15:42
Цитата

htons
htonl
WinSock.pas


какая разница, что ты используешь? портов все-равно 65535... ну нету больше. так что, когда ты задаешь значение в интежер - любая библиотека преобразует (точнее урежет) его до Word, как и показал Metalfan... Он тебе даже показал результат, который у тебя и есть - 27016...

P.S.: как ты можешь работать с сетью, если даже не знаешь, что такое порт???

Автор: E_v_g 6.3.2007, 05:01
Да знаю я, просто по запарке выставил, проверил - работает, ну и оставил.  smile 
Действительно, если < 65000, то все как надо. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)