Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Можно ли как-нить узнать свободен ли данный порт?   Найти похожие ветки 

 
SergP ©   (2003-09-16 11:01) [0]

Сабж.
Смысл в том что в проге используется TServerSocket (для внутренних целей).
Типа:
TWebbrowser <--> TserverSocket <--> Обработчик запросов и ответов <--> TClientsocket <--> Инет

Он должен быть настроен на какой-нить порт.
Но если я запускаю несколько копий проги то нужно чтобы порты были разные. как проверить или используется данный порт?


 
Карелин Артем ©   (2003-09-16 11:03) [1]

Клиентский сокет в блокирующем режиме делает коннект. Хост 127.0.0.1 порт известный. Дальше смотри на реакцию сокета.


 
SergP ©   (2003-09-16 13:03) [2]


> Карелин Артем © (16.09.03 11:03) [1]
> Клиентский сокет в блокирующем режиме делает коннект. Хост
> 127.0.0.1 порт известный. Дальше смотри на реакцию сокета.


Как я понял нужно создать еще один ClientSocket, с помощью которого по очереди проверять некоторый диапазон портов ? И если сокет не сможет сконектиться то значит порт свободен?


 
Dimka Maslov ©   (2003-09-16 13:11) [3]

1. Создаёшь сервер и вешаешь его на нужный тебе порт
2. Создаёшь клиента и пытаешся соединиться с сервером 127.0.0.1:port
3. Если сервер установил соединение - порт свободен, если сервер ничего не установил порт занят


 
SergP ©   (2003-09-16 13:48) [4]


> Dimka Maslov © (16.09.03 13:11) [3]
> 1. Создаёшь сервер и вешаешь его на нужный тебе порт
> 2. Создаёшь клиента и пытаешся соединиться с сервером 127.0.0.1:port
> 3. Если сервер установил соединение - порт свободен, если
> сервер ничего не установил порт занят


Хорошо. А эксперименты с "занятым портом" не повлияют на выполнение копии программы которая уже использует именно этот порт?

И нет ли более простого способа определения? А то использование дополнительных сокетов как-то нехорошо выглядит, типа усложненно...


 
Polevi ©   (2003-09-16 13:58) [5]

The Windows Sockets bind function associates a local address with a socket.

For TCP/IP, if the port is specified as zero, the service provider will assign a unique port to the application with a value between 1024 and 5000. The application can use getsockname after bind to learn the address and the port that has been assigned to it


 
SergP ©   (2003-09-17 07:09) [6]


> Polevi © (16.09.03 13:58) [5]
> The Windows Sockets bind function associates a local address
> with a socket.
>
> For TCP/IP, if the port is specified as zero, the service
> provider will assign a unique port to the application with
> a value between 1024 and 5000. The application can use getsockname
> after bind to learn the address and the port that has been
> assigned to it


Хм... Что-то я такого не наблюдаю. Или что-то не так делаю. Устанавливаю порт 0. потом активирую сокет. А как узнать на какой порт его теперь система "повешала"? Свойство port у serversocket не изменяется после активирования...


 
Digitman ©   (2003-09-17 10:53) [7]

MyServerSocket.Socket.LocalPort


 
delpher_gray ©   (2003-09-18 20:49) [8]

try
ServerSocket1.Open;
except
ShowMessage("Порт занят !!");
// Меняй порт, пробуй заного...
end;


 
Polevi ©   (2003-09-18 22:19) [9]

ох...


 
Digitman ©   (2003-09-19 08:11) [10]


> SergP


глаза раскрой !)


> Digitman © (17.09.03 10:53) [7]



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
1-41562
Дуся
2003-10-24 18:46
2003.11.13
Помогите! Валится при закрытии приложения.


14-42066
kopcap
2003-10-23 19:58
2003.11.13
нащёт CGI


3-41044
uu
2003-10-24 15:46
2003.11.13
fastreport


1-41140
bon
2003-11-03 15:02
2003.11.13
Свойства


14-41915
icebeerg
2003-10-21 13:30
2003.11.13
О списании