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

Вниз

Проверить, используется ли уже данный UDP порт.   Найти похожие ветки 

 
DVM ©   (2007-05-24 14:48) [0]

Для TCP делал так:


function TestTCPPort(Port: integer): boolean;
var
 WSA : TWSAData;
 ListenSocket: TSocket;
 SockAddr : TSockAddr;
begin
 result := false;
 if WSAStartup($101, WSA) <> 0 then exit;
 try
   ListenSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
   if ListenSocket = INVALID_SOCKET then exit;
   try
     FillChar(SockAddr, SizeOf(TSockAddr), 0);
     SockAddr.sin_family := AF_INET;
     SockAddr.sin_port := htons(Port);
     SockAddr.sin_addr.S_addr := INADDR_ANY;
     if bind(ListenSocket, SockAddr, SizeOf(TSockAddr)) <> 0 then exit;
     if listen(ListenSocket, SOMAXCONN) <> 0 then exit;
     result := true;
   finally
     Closesocket(ListenSocket);
   end;
 finally
   WSACleanup;
 end;
end;


Для UDP так не проходит, если я просто заменяю

SOCK_STREAM на SOCK_DGRAM.

Что неправильно?


 
Сергей М. ©   (2007-05-24 14:59) [1]


> Что неправильно?


Ответ - прямо в справке:

listen applies only to sockets that are connection oriented, for example, those of type SOCK_STREAM


 
DVM ©   (2007-05-24 15:05) [2]


> Сергей М. ©   (24.05.07 14:59) [1]

Спасибо.


 
Сергей М. ©   (2007-05-24 15:15) [3]

Более того, для определения "занятости" порта вызов listen() вообще не нужен - ни при SOCK_STREAM, ни при SOCK_DGRAM.

Если порт занят, bind() вернет отказ.


 
DVM ©   (2007-05-24 15:19) [4]


> Если порт занят, bind() вернет отказ.

Ясно. Буду справку внимательнее читать. :)



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

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

Наверх




Память: 0.47 MB
Время: 0.022 c
15-1199463844
Denis__
2008-01-04 19:24
2008.02.10
Флешка


15-1199250677
Dmitry S
2008-01-02 08:11
2008.02.10
Не грузится Windows.


2-1200652142
asdf
2008-01-18 13:29
2008.02.10
Как заменить строку в MySQL


2-1200556620
npr2
2008-01-17 10:57
2008.02.10
delphi installshield и потоки


2-1200310863
КуХ
2008-01-14 14:41
2008.02.10
Кодировка