На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Соблюдайте общие правила форума
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Указывайте точные версии Delphi и используемых сетевых библиотек.

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

Внимание:
попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Krid, user posted image Rouse_

Модераторы: Krid, Rouse_
  
> Опять TClientSocket и Asynchronous socket error 10061
    Пишу клиент мелкий но надо использовать потоковые функции

    Надо обойти ненавистную ошибку ?когда к серверу не может достучаться

    Всегда помогало type=ctNonBlocking, обработчик в OnError и в конце ErrorCode:=0

    но в этот раз надо писать и читать не с помощью onRead,onWrite,а стримами и соответственно type=ctNonBlocking нельзя

    Так вот как бы не выставлял ErrorCode:=0 все равно выскакиевает ошибка во время работы программы:(
    Как только ставлю в Blocking ошибка исчезает, но как только начинаю читать или писать вылазит Socket Must be in blocking mode

    Уважаемые гуру, прошу помощи


    использую Delphi 2007
      Цитата
      socket error 10061

      Вообще то эта ошибка как бы к коду не относится :huh: :
      Цитата
      WSAECONNREFUSED (10061) В подключении отказано – на хосте партнера не
      работает программа запрашиваемого сервиса
        Цитата Oleg2004 @
        Вообще то эта ошибка как бы к коду не относится :

        Почему? Очень даже относится. Если бы он не активировал сокет - то и такой ошибки бы не было!!! :D начинающий, сия ошибка вылезет при отказе в установке соединения только в блокирующем режиме когда сервер, на который "стучишься" не активен. :) ErrorCode здесь бесполезен т.к. в блокирующем режиме обработка операций на сокете линейна, а не асинхронна и такого события, как впрочем и onRead, onWrite попросту не возникнет. Соответственно, попытки принудительно выполнить данные процедуры приведут к отказу в доступе, что впрочем и наблюдается.
        Цитата начинающий @
        но в этот раз надо писать и читать не с помощью onRead,onWrite,а стримами и соответственно type=ctNonBlocking нельзя

        Рекомендую посмотреть в сторону TWinSocketStream, а чтобы ошибка при коннекте не "вылазила" (если сервер не активен) - все операции на сокете заключить в блок try...except, где в секции except вызовом WSAGetLastError узнавать код ошибки, вызвавшей исключение, подавлять ее и выдавать пользователю свое сообщение (при необходимости) или предпринимать какие то другие действия. :)
          Цитата medved_68 @
          Почему? Очень даже относится.

          Я бы не был столь категоричным :D Это ошибка на стороне партнера по сети - а не в программе :D
          Эта ошибка выскакивает на любой работающей клиентской программе - на любом броузере и тд - если в доступе отказано - и от типа сокета, на котором работает соединение, она категорически не зависит :no:
            Цитата Oleg2004 @
            Это ошибка на стороне партнера по сети - а не в программе

            Цитата Oleg2004 @
            и от типа сокета, на котором работает соединение, она категорически не зависит

            Спорить было бы глупо. :D Я упомянул только блокирующий режим потому что у автора при попытках выполнить операции чтения и записи выдавался отказ в доступе. :huh:
            Цитата Oleg2004 @
            Я бы не был столь категоричным
            Цитата medved_68 @
            Почему? Очень даже относится. Если бы он не активировал сокет - то и такой ошибки бы не было!!!
            :D Отсюда и "категоричность". :D
            Сообщение отредактировано: medved_68 -
              спасибо, обыграл ситуацию с try ... except ...

              что-то типа такого

              ExpandedWrap disabled
                 Client.Address:=ServerIpCombo.Text;
                 
                 
                  ServerConnection:=0;
                  i:=0;
                 
                  while ((ServerConnection<>1) and (i<20)) do
                  begin
                    try
                      Client.Open;
                      ServerConnection:=1;
                    except
                      on Exception do
                      begin
                        ServerConnection:=-1;
                        inc(i);
                        Sleep(200);
                        Application.ProcessMessages;
                      end;
                    end;
                  end;
                 
                 if (ServerConnection<>1)  then
                 begin
                 MemoLog.Lines.Add('No server connection');
                 Exit;
                 end;
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0502 ]   [ 16 queries used ]   [ Generated: 25.07.25, 14:40 GMT ]