Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.02 c
6-1179212393
gimbat
2007-05-15 10:59
2008.02.10
Спам фильтр для Exchange Server


15-1199714934
Parus
2008-01-07 17:08
2008.02.10
PHP: register_shutdown_function для рекламы


15-1199109936
ArtemESC
2007-12-31 17:05
2008.02.10
Чем можно прочистить водный камень в кране?


2-1200517261
Res
2008-01-17 00:01
2008.02.10
Unicode


15-1199936235
Slider007
2008-01-10 06:37
2008.02.10
С днем рождения ! 10 января 2008 четверг




   Наверх