Конференция "Сети" » Как подключить нескольких клиентов? [D6, D7, Win2k, WinXP]
 
  • Plotnick (06.07.08 16:09) [0]
    Есть задача - подключение к интернет-серверу с несколькими клиентами. Собственно, для каждого подключения создаю своего HTTP-клиента и по очереди подключаю. Но после того, как подключу первого (там есть авторизация - логин, пароль) все остальные при подключении к серверу, уже считаются подключенным с логином, паролем первого.
    То есть, видимо как-то первым клиентом держится подключение что ли со всеми параметрами. А как бы так сделать, чтобы раздельно? И при этом, чтобы для каждого клиента соединение держалось?
  • umbra © (07.07.08 10:54) [1]

    > Но после того, как подключу первого (там есть авторизация
    > - логин, пароль) все остальные при подключении к серверу,
    >  уже считаются подключенным с логином, паролем первого.
    > То есть, видимо как-то первым клиентом держится подключение
    > что ли со всеми параметрами. А как бы так сделать, чтобы
    > раздельно? И при этом, чтобы для каждого клиента соединение
    > держалось?
    >

    что собой представляет клиент?
  • Поросенок Винни-Пух © (07.07.08 11:12) [2]
    Но после того, как подключу первого (там есть авторизация - логин, пароль) все остальные при подключении к серверу, уже считаются подключенным с логином, паролем первого.

    Зачем считаются?
  • Plotnick (07.07.08 20:24) [3]
    Ну есть компонент TAlWinInetHttpClient
    Создаю динамически несколько экземпляров. С одного через Post вхожу на сайт передавая логин и пароль. Он естественно считается подключенным уже и возвращает страничку пользователя.

    Когда я прочими остальными экземплярами коннекчусь к сайту, они сразу же загружают уже эту страничку, этого же пользователя, не спрашивая у меня логин и пароль.

    А хотелось бы чтобы каждый мог подключиться с каким-то своим логином и паролем и работал как отдельный пользователь сайта.

    Вот не знаю как это сделать.

    Конечно, расчитывать, что каждый в курсе, что за компоненты я юзаю глупо, но я думаю, что дело тут не в каком-то конкретном компоненте, а в каких-то опциях с которыми компонент подключается к инету.
  • umbra © (07.07.08 23:28) [4]

    > Конечно, расчитывать, что каждый в курсе, что за компоненты
    > я юзаю глупо, но я думаю, что дело тут не в каком-то конкретном
    > компоненте, а в каких-то опциях с которыми компонент подключается
    > к инету

    Дело непонятно в чем. Можете предоставить логи хттп-запросов от ваших клиентов к серверу?
  • plotnick (08.07.08 16:25) [5]
    Для начала тогда механизм, наверное имеет смысл.

    Для проверки подключен клиент или нет вызывается
    Get('сайт/my.html')

    Если подключен, то возвращается страничка пользователя.
    Если не подключен, то возвращается страничка в которой нужно вводить логин и пароль. Ну соответственно вызывается
    Post('сайт/login.html',varlist)

    где varlist - список переменных (логин, пароль и т.д.)

    Если все успешно, то опять-таки возвращается страничка пользователя.

    Далее проверяю подключение следующего клиента, то есть вызываю
    Get('сайт/my.html')

    и возвращается страничка предыдущего подключенного клиента, вместо того, чтобы выдать очередную страничку со вводом логина и пароля.

    То есть, получается возможным подключение только одного клиента в один момент времени. Для того, чтобы подключить следующего, надо сделать
    Get('сайт/logout.html')

    Тогда при следующем подключении выдаст страничку с логином и паролем.
    Вот.
  • umbra © (08.07.08 16:31) [6]
    очевидно, где-то засела кука, которую видят и используют все клиенты
  • umbra © (08.07.08 16:33) [7]
    или сервер принимает только одну сессию от айпи. или по рефереру определяет, что это тот же клиент.
  • Plotnick (08.07.08 19:07) [8]
    Ну вот проверил сервер. То есть вошел с разных браузеров под разными логинами. Нормально все.
  • Plotnick (08.07.08 19:53) [9]
    У самого компонента не так много свойств, чтобы поиграться.

    wHttpIo_Async,                    
    wHttpIo_From_Cache,                
    wHttpIo_Offline,
    wHttpIo_Cache_if_net_fail,        
    wHttpIo_Hyperlink,                
    wHttpIo_Ignore_cert_cn_invalid,    
    wHttpIo_Ignore_cert_date_invalid,  
    wHttpIo_Ignore_redirect_to_http,  
    wHttpIo_Ignore_redirect_to_https,  
    wHttpIo_Keep_connection,          
    wHttpIo_Need_file,                
    wHttpIo_No_auth,                  
    wHttpIo_No_auto_redirect,
    wHttpIo_No_cache_write,
    wHttpIo_No_cookies,
    wHttpIo_No_ui,
    wHttpIo_Pragma_nocache,
    wHttpIo_Reload,
    wHttpIo_Resynchronize,
    wHttpIo_Secure

    Пробовал ставить wHttpIo_No_cookies - вообще коннектиться перестал. По умолчанию также у него устанавливается wHttpIo_Keep_connection.
  • umbra © (08.07.08 23:52) [10]

    > Пробовал ставить wHttpIo_No_cookies - вообще коннектиться
    > перестал.


    Значит сервер таки выдает куки.
    Похоже, что ваш компонент - это некий наследник
    TWebBrowser

    , что означает общие куки. Используйте не браузер, а хттп-клиент типа
    TIdHTTP

  • plotnick (09.07.08 14:13) [11]
    Только уточнить хочу, не "коннектиться перестал", а "логиниться перестал". Хотя в моем случае возможно, что и без разницы. Ладно, спасибо, попробую idhttp
 
Конференция "Сети" » Как подключить нескольких клиентов? [D6, D7, Win2k, WinXP]
Есть новые Нет новых   [134433   +21][b:0][p:0.001]