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

Вниз

Как узнать, прослушивается ли уже данный порт?   Найти похожие ветки 

 
Burmistroff ©   (2001-11-10 20:28) [0]

Ситуация такая: например запущен Apache (порт 80). Я пытаюсь TServerSocket открыть на том-же порту, на что получаю Access Violation. А нельзя ли более мирным способом проверить тот факт, что данный порт уже прослушивается?


 
paul_shmakov ©   (2001-11-11 03:37) [1]

вот написал сейчас небольшой примерчик

program portuse;

uses Windows, Sysutils, Winsock;

{$APPTYPE CONSOLE}

function IsPortInUse(Port: Smallint): Boolean;
var
S: TSocket;
Sin: sockaddr_in;
WSAData: TWSAData;
begin
Result := false;

WSAStartup($0101, WSAData);
try
S := socket(AF_INET, SOCK_STREAM, 0);
if S <> INVALID_SOCKET then
try
ZeroMemory(@Sin, SizeOf(Sin));
Sin.sin_family := AF_INET;
Sin.sin_port := htons(Port);
Sin.sin_addr.s_addr := INADDR_ANY;

if (bind(s, TSockAddr(Sin), SizeOf(Sin)) = SOCKET_ERROR) or
(listen(s, SOMAXCONN) = SOCKET_ERROR)
then
Result := WSAGetLastError = WSAEADDRINUSE;

finally
closesocket(s);
end;
finally
WSACleanup;
end;
end;

var
I: Integer;
begin
if ParamCount > 0 then
begin
for I := 1 to ParamCount do
if IsPortInUse(StrToInt(ParamStr(I))) then
WriteLn(ParamStr(I) + " port in use")
else
WriteLn(ParamStr(I) + " port unused");
end
else
WriteLn("usage: portuse.exe port [port ... ]");
end.


 
panov ©   (2001-11-12 13:00) [2]

Можно просто попытаться подключиться к этому порту, если удастся - порт уже прослушивается...



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
14-8976
Nikolay
2001-12-12 20:27
2002.02.04
Откачали........


4-9025
Rumrunner
2001-12-07 08:14
2002.02.04
Как установить окно ЛЮБОЙ программы в StayOnTop?


14-8998
Мимо проходил 2001:
2001-12-11 12:35
2002.02.04
Вот многие здесь говорят что оффтопик, а мне так кажется что просто топик лучше на девушке будет смотреться.


3-8799
otari
2002-01-06 23:15
2002.02.04
никто не знает INTERBASE?


4-9040
GoldenFox
2001-12-06 16:06
2002.02.04
Надо убрать иконку из Таскбара в WinNT,