rad studio InDy плохо работает socks

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Romik001, 21 Jan 2015.

  1. Romik001

    Romik001 Member

    Joined:
    18 Jul 2009
    Messages:
    43
    Likes Received:
    8
    Reputations:
    10
    Доброго времени суток всем. Такое дело: задолбался я значит с соксами в RadStudio XE 2. 3 дня пытался заставить работать инди в потоке через сокс проксю, не понимал в чем дело - на форме всё работает, а в потоке динамично созданные компоненты — не ходили через сокс.
    Ну да ладно. Кое как, таки выяснил, что оказывается нужно сначала задавать все параметры прокси в SocksInfo, а потом уже его цеплять. Уверен что многие потратили много нервов с этим.

    Ну да ладно, с этим все прояснилось, но вот еще при тесте когда компоненты были на форме, было замечено, что нормальный сокс, который через браузер стабильно открывает любые сайты, в моей проге еле работает, через раз. Один раз загрузит страницу, другой раз уже нет. Два раза загрузит, третий нет, четвертый нет, пятый — опять заргузит, и.т.п.
    Т.е. работает как то не стабильно, будто проге не нравится сокс.
    Так вот что можно сделать для того что бы indy как то более лояльно чтоли относил(-ась, ось, -ся) к соксу?
    Соксы естественно разные подсовывал.
    пока что вижу только вариант с допустим трехкратной проверкой: 3 раза подряд не прошел запрос — прокся сдохла, меняем... но это извращение...
    Code:
     	        TIdHTTP*http=new TIdHTTP(NULL);
    		TIdIOHandlerStack*socks=new TIdIOHandlerStack(NULL);
    		TIdSocksInfo*socks_info=new TIdSocksInfo(NULL); 
    
    		 String page;
    
    		 socks_info->Host= "221.xxx.208.xx";
    		 socks_info->Port=1080;
    		 socks_info->Version=svSocks4;
    		 socks->ReadTimeout=10000;
    		 socks->ConnectTimeout=10000;
    		 http->IOHandler=socks;
    		 socks->TransparentProxy=socks_info;
    
    	Form1->Memo1->Lines->Add("Пытаемся чекнуть...");
    	try{
    	page=http->Get("http://hideme.ru/ip/");
    	} catch (...)
                              {
                              Form1->Memo1->Lines->Add("не прошло");
                              }
    	
    	Form1->Memo1->Lines->Add(page);
    
    	delete http;
    	delete socks;
    	delete socks_info;
    
    ReadTimeout и ConnectTimeout не помогли.
    версия инди: 10.5.8.0
    Подскажите что можно поделать кроме как отказаться от инди? Спасибо большое.

    _____________________________________________________
    UPD:
    В общем суть проблемы была в названии... плохо работает прокси... решил доканать эту тему, проверил эти прокси на разных билдерах, и в браузере нормально так потестил. опытным путем выяснил что они везде стабильно плохо работают.
     
    #1 Romik001, 21 Jan 2015
    Last edited: 24 Jan 2015