Конференция "Сети" » Как проверить сокеты [D7]
 
  • Евгений07 © (11.10.16 19:43) [0]
    Доброго времени!
    Перестали работать сокеты.
    Клиент: синхронный, неблокирующий.
    Листен: асинхронный.

    Работа:
    1.
    - Клиент посылает команду 1 (байт 40).
    - Листен принимает и обрабатывает.
    2.
    - Листен посылает команду 2 (байт 80).
    - Клиент посылает команду 1,
    - Клиент принимает и выполняет команду 2.
    - Клиент посылает ответ на команду 2 (байт 80).
    - Листен принимает и обрабатывает команду 2.
    3.
    - Клиент посылает команду 1.

    А дальше тишина.

    Вчера все работало!
    Система с отладчиком Клиента работает.
    В реале после шага 3 опрашиваю: OperWrite = 10
       if (OperWrite > 10) then begin
         if FD_IsSet(Sockett, FDSetW) then
         begin
           Len := LenWrite;
           LenWrite := Send(Sockett, BufWrite, Len, 0);
           if (LenWrite < Len) or (OperRead >= 900) or (OperWrite >= 900) then begin
             OperWrite := 13;
    //          goto KONC1;
           end else begin
             OperWrite := 10;  //  после передачи возвращает готов к приему
           end;
         end else begin
    //        goto KONC1;
           OperWrite := 13;
         end;
       end;


    Считаю, команда Send выполнена??
    А на Листен событие
    WSAWaitForMultipleEvents(3, @FEvents, False, WSA_INFINITE, False) = WSA_WAIT_EVENT_0 + 2
    if NetEvents.lNetworkEvents and FD_READ <> 0 then
    . . .

    не наступило

    Подскажите где и как порыться!
  • Евгений07 © (12.10.16 23:01) [1]
    Затык сокета?
    Это же элементарно, Евгений07!

    1 Не было ли идеи сохранить лог, дописывая в конец файла?
    2 Не была ли она реализована заменой Rewrite на Reset?
    3 Не являлся ли лог текстовым файлом?
    Если да, то замените Reset на Append.

    А почему не было ошибки ввода - вывода - пока не знаю
 
Конференция "Сети" » Как проверить сокеты [D7]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]