Форум: "Сети";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Внизпроверка открытых портов (в частности UDP) Найти похожие ветки
← →
RAshka © (2004-06-13 01:59) [0]Вопрос - как, такие программы, как LanSpy, NetSecurityScan и др. выдают список всех открытых портов в течении 30 секунд (TCP и UDP). Пытался я открывать сокет функцией "socket", так если порт закрыт - программа подвисала более чем на 5 секунд, а просканировать 65K портов... это уже не шутка.
Также меня интересует, как проверить открыт ли UDP-порт (функцией socket это сделать не получается).
Вот пример кода (на всякий случай):
function process_CheckPort(strIP:String;port:Integer):Boolean;
var
WSAData : TWSAData;
WrkSocket : TSocket;
SockAddrIn : TSockAddrIn;
begin
Result:=false;
if WSAStartup(WINSOCK_VERSION, WSAData) = NO_ERROR then
begin
ZeroMemory(@SockAddrIn, sizeof(SockAddrIn));
WrkSocket:=socket(PF_INET, SOCK_STREAM, 0);
SockAddrIn.sin_family:=AF_INET;
SockAddrIn.sin_port:=htons(port);
SockAddrIn.sin_addr.S_addr:=inet_addr(PAnsiChar(strIP));
if WrkSocket<>INVALID_SOCKET then
begin
if connect(WrkSocket, SockAddrIn, sizeof(SockAddrIn))<>SOCKET_ERROR then
Result:=true;
CloseSocket(WrkSocket);
end;
WSACleanup;
end;
end;
← →
Verg © (2004-06-13 11:18) [1]TCP сканеры портов используют множество сокетов в неблоуируюем режиме с мультиплекстированием.
Про UDP - можно узнать лишь только то, что какой-то порт закрыт и то не наверняка. Отправляются датаграммы на заданный порт и если возникает ошибка WSAECONNRESET, то этот порт точно никто не обслуживает в данный момент. А если ошибка не возникает, то.... то это ничего не значит :)) - то ли порт открыт, то ли ICMP с данного хоста не отправляются, то ли ICMP до твоего хоста не доходят и т.д....
← →
Verg © (2004-06-13 11:49) [2]Да, и вот еще что, для UDP ошибка WSAECONNRESET будет наблюдаться при попытке приема с сокета, через который была отправлена датаграмма.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c