![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток!
Изучение работы неблокирующих сокетов решил начать с написания простенького прокси-чекера, позволяющего определить статус соединения с тем или иным прокси. Код:
var
data : twsadata;
sock : array [0..9] of tsocket;
addr : tsockaddr;
blck : u_long;
i : integer;
t : timeval;
begin
blck := 1;
wsastartup ($101, data);
for i := 0 to 9 do
begin
sock[i] := socket (AF_INET, SOCK_STREAM, 0);
while sock[i] = INVALID_SOCKET do sock[i] := socket (AF_INET, SOCK_STREAM, 0);
ioctlsocket (sock[i], FIONBIO, blck);
addr.sin_family := AF_INET;
addr.sin_addr.s_addr := inet_addr (pansichar ('{proxy adress}'));
addr.sin_port := htons ({proxy port});
connect (sock[i], addr, sizeof (addr));
end;
sleep (1000);
for i := 0 to 9 do closesocket (sock[i]);
wsacleanup;
end;Задача: - загрузить 10 прокси в один поток - попытаться соединиться с каждым в неблокирующем режиме - через N времени проверить открытые сокеты на предмет того, есть ли соединение, или прокси мертв Третий пункт решить не получается, прошу помощи. Грубо говоря, я представляю это так: for i := 0 to 9 do // проверка sock[i]; Но как сделать - не понимаю. Заранее спасибо за ответы. |