|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
ping + проверка порта на открытость
Сразу предупреждаю: яндексил, поиск по форуму юзал.
Нужен простой алгоритм ping-а (без применения тяжеловесов-индейцев, всё на winsock), и если есть ответ от сервера - проверить, открыт ли на нём порт. В результате функция должна вернуть: -1 - если сервер недоступен -2 - если сервер доступен, но порт закрыт иначе среднее из двух-трёх пингов. То, что имею сейчас: Код:
function Aviable(ipaddr:string;port:integer):boolean; var D:WSAData; S:TSocket; A:TSockAddr; begin result:=false; if WSAStartup($101,D)<>0 then exit; A.sin_family:=AF_INET; A.sin_addr.S_addr:=inet_addr(pchar(ipaddr)); S:=socket(AF_INET,SOCK_STREAM,0); if S=INVALID_SOCKET then exit; A.sin_port:=htons(port); if connect(S,A,sizeof(A))=0 then result:=true; WSACleanup; end; Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#2
|
||||
|
||||
И вот ещё что: ни у кого не завалялась функция преобразования адреса вида "my.site.ru" в IP-адрес, с учётом файла hosts и текущих настроек DNS на компе юзера?
==================== ЗЫ: Раздаю плюсы за любую полезную информацию. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
DelphiWorld
Насколько ты объяснил, ответы такие:
Как узнать IP машины по имени Код:
uses WinSock; const WINSOCK_VERSION = $0101; function GetIPAddress(name: string): string; var WSAData: TWSAData; p: PHostEnt; begin WSAStartup(WINSOCK_VERSION, WSAData); p := GetHostByName(PChar(name)); Result := inet_ntoa(PInAddr(p.h_addr_list^)^); WSACleanup; end; Определить, занят ли порт сокета Код:
var SockAddrIn : TSockAddrIn; FSocket : TSocket; ... If bind(FSocket, SockAddrIn, SizeOf(SockAddrIn)) <> 0 Then begin обрабатываем WSAGetLastError end; а вообще можно и через пинг. Чтобы узнать IP сервера www.google.ru (http://www.google.ru), пишешь в командной строке: ping www.google.ru (http://www.google.ru/) Нет повести печальнее на свете, чем повесть о заклиневшем Resete. |
#4
|
||||
|
||||
И на всякий случай, формируй запросы правильно. и ищи детально.
http://www.google.ru/search?hl=ru&q=...lr=&aq=f&o q= Нет повести печальнее на свете, чем повесть о заклиневшем Resete. |
#5
|
||||
|
||||
Хм... спс за первый код. а второй я чёто не разобрал... слух, я в винсоках нулевой. Можешь разъяснить, что там и куда?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#6
|
||||
|
||||
|
#7
|
||||
|
||||
Огромная спасиба))
============= Радость была недолгой, ибо это решило дело лишь наполовину. Вопрос ещё открыт: как проверить, есть ли соединение с определённым портом на сервере? Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj Последний раз редактировалось PhoeniX, 02.06.2009 в 16:02. |
#9
|
||||
|
||||
Спс, помогло. пока заюзал второй... Позже переделаю первый под себя.
Поставил плюсеги. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#10
|
||||
|
||||
Кстати а для чего тебе это если не секрет??
|
#11
|
|||
|
|||
Для Ferra.Я прикольнее придумал слоган - нет повести печальнее на свете,чем повесть о зависшем интернете!!!
|