Многопоточность через прокси

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Freedom, 14 Jan 2010.

  1. Freedom

    Freedom Elder - Старейшина

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8
    Ребят объясните плиз принципы построения многопоточных приложений через прокси.

    Дано. Многопоточная прога чекающая акки на валид.
    Нужно сделать чтобы эта радость работала через список прокси.

    Без прокси все классно работает.

    если запускаешь поток с чеком акков через прокси, то если прокси невалиден то поток завершается и акк естественно не чекается и всё идет дальше.

    Вопрос. Как все нормально организовать. Чекать прокси на валид перед чеком или как нибудь по другому ?
     
  2. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    чекать прокси на валид перед запуском программы
     
  3. Freedom

    Freedom Elder - Старейшина

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8

    оригинальный подход ))))

    киньте плиз тогда в личку валидных соксов )))
     
  4. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    используй try - except
     
  5. Freedom

    Freedom Elder - Старейшина

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8
    т.е.

    try
    http.post(запрос через прокси);
    except
    http.post(запрос без прокси);
    end;

    вот так ?
     
  6. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    нет.

    try
    http.post(запрос через прокси);
    except
    end;

    в except можно делать, что хочешь, например удалять эту проксю, раз через нее соединиться не удалось
     
  7. drim

    drim Member

    Joined:
    27 Aug 2009
    Messages:
    347
    Likes Received:
    33
    Reputations:
    4
    они продаются
     
  8. Freedom

    Freedom Elder - Старейшина

    Joined:
    2 Jul 2007
    Messages:
    38
    Likes Received:
    92
    Reputations:
    8
    так получается что поток завершается и акк не чекается (
     
  9. ZdezBilYa

    ZdezBilYa Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    198
    Likes Received:
    75
    Reputations:
    19
    тогда вот так:

    Code:
    error:=true;
    while error do
     begin
      error:=false;
      try
       http.post;
      except
       error:=true;
       берем другую прокси;
      end;
    end;
    будет повторяться пока запрос не пройдет без ошибок
     
  10. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    завести объект вида

    enum Check
    {
    Unchecked,
    Valid,
    Invalid,
    ProxyError
    }

    Список/Массив вида
    id - CheckValue

    Проверка
    while(currentAccount.CheckValue == Check.ProxyError || currentAccount.CheckValue == Unchecked)
    try
    {
    тут могут быть варианты вида Valid и Invalid.
    break;
    }
    catch(SocketException)
    {
    currentAccount.CheckValue = Check.ProxyError;
    removeProxy();
    }
    }
    ...

    Все просто. В цикле проверяем поле которое отвечает за информацию о валидности акка и его статусе проверки.
    Если проверили акк, то выставляем соответствующий статус, иначе если ловим ошибку сокета, присваиваем статус говорящий что трабла с прокси.

    P.S. забываю уже дельфи :(