Конференция "Сети" » SocketServer/Client обработка ошибки
 
  • AndrewAndrey © (30.03.15 15:02) [0]
    Добрый день!
    Каким образом пропускать ошибки подключения клиента к несуществующему адресу? (10061)
    IP адреса я в ручную не указываю а перебираю по-очередно все адреса данной подсети - до тех пор пока не произойдет коннект. Если есть коннект - останавливаю цикл и запоминаю адрес.
    Соответственно, все те, заведомо ошибочные подключения генерируют ошибку, а это не очень красиво.
    try
    socket.active:=true;
    except
    не помогает, я так понимаю событие onError происходит вне исключения.
  • junglecat © (30.03.15 17:01) [1]
    кто мешает игнорировать 10061 в onError?
  • кгшзх © (30.03.15 23:12) [2]
    генерируют ошибку, а это не очень красиво.

    и как бы ты такой красивый узнал,
    что очередной левый адрес не стоит запоминать если бы ошибки не генерировалось?
  • Rouse_ © (31.03.15 00:28) [3]
    Брут по диапазону? Забавно, что пишем?
  • AndrewAndrey © (31.03.15 09:50) [4]
    Да так, мелочь для офиса, обмен файлами, но с определенной спецификой, а перебор адресов чисто для своего удобства, что бы вручную не вводить при установке программы.

    Я понимаю, что генерации ошибки не избежать - меня как раз интересует, как избежать появления сообщения в графическом интерфейсе.

    Что мешает игнорировать? как раз в этом и вопрос))

    MySocketOnError(......)
    begin
    if ErrorCode=10061 then
    Что делать?
    end

    Если ничего не делать то появится сообщение об ошибке.
  • AndrewAndrey © (31.03.15 09:59) [5]
    1. Чтобы "заглушить" ошибку нужно обработать OnError. Если ErrorCode установить в 0, исключения не будет возникать.
    Каким образом это сделать?

    ErrorCode:=0; ?? Разве это параметр не ReadOnly?

    2. OnError - продолжает грустную тему предыдущего события :). Возникает при ошибке в работе сокета. Следует отметить, что это событие не поможет Вам отловить ошибку в момент открытия сокета (Open). Для того, чтобы избежать выдачи виндозного сообщения об ошибке, надо заключить операторы открытия сокета в блок try..except (обработка исключительных ситуаций);

    Вот как раз так и сделал на открытии сокета - не работает.
  • junglecat © (31.03.15 10:19) [6]
    if ErrorCode=10061 then Abort;
  • AndrewAndrey © (31.03.15 10:32) [7]
    Спасибо!
    А если
    SocketOnError()
    begin

    Abort;

    end;

    будет игнорировать все события?
  • Dennis I. Komarov © (03.04.15 01:04) [8]
    Может посмотреть в сторону широковещательных запросов и придумать нормальный протокол, а то однажды можно и оглоблей получить...
 
Конференция "Сети" » SocketServer/Client обработка ошибки
Есть новые Нет новых   [134427   +34][b:0][p:0]