Собственно сам сабж — есть приложение под винду которое отправляет данные на сокет ( все работает через
синхронный вызов asio, по стеку посмотрел — в конце вызывается WSASend)
И после этого быстренько завершается ... на другой сокет данные то приходят то нет ... судя по всему
приложение успевает прибиться раньше чем данные кудато ушли.
Важное замечание — сокет локальный, при удаленном вроде все работате нормально.
TCP_NODELAY и FlushFileBuffers пробовал — не помогло ... сокет блокирующий
Здравствуйте, The Passenger, Вы писали:
TP>кто что пробовал как решали?
Если ничего больше не помогает, я бы внес в протокол уведомление о получении. Соответственно, и закрывать сокет можно будет после получения подтверждения о получении.
Re[2]: локальный сокет не успевает отправить данные
Здравствуйте, Nikolay_Ch, Вы писали:
TP>>кто что пробовал как решали? N_C>Если ничего больше не помогает, я бы внес в протокол уведомление о получении. Соответственно, и закрывать сокет можно будет после получения подтверждения о получении.
ну этото понятно, просто вдруг ктото сталкивался и решил по простому флажок где подпихнуть, хэндл какнить проверить
полагаю проблема завязана с тем что сокет локальный, а он скорее всего пишет в shared files
и гдето толи не успевает дописать, толи файл закрывается до принятия сервером эвента
Здравствуйте, The Passenger, Вы писали:
TP>ну этото понятно, просто вдруг ктото сталкивался и решил по простому флажок где подпихнуть, хэндл какнить проверить TP>полагаю проблема завязана с тем что сокет локальный, а он скорее всего пишет в shared files TP>и гдето толи не успевает дописать, толи файл закрывается до принятия сервером эвента
У меня такое и в обычных сокетах встречалось...
Вот, что советует MSDN:
1) Call WSAEventSelect to register for FD_CLOSE notification.
2) Call shutdown with how=SD_SEND.
3) When FD_CLOSE received, call the recv or WSARecv until the function completes with success and indicates that zero bytes were received. If SOCKET_ERROR is returned, then the graceful disconnect is not possible.
4) Call closesocket.
Здравствуйте, SkyDance, Вы писали:
TP>>кто что пробовал как решали?Важное замечание — сокет локальный, при удаленном вроде все работате нормально.
SD>Для локального сокета проблема решается установкой SO_LINGER (setsockopt).
не чета не шибко помогло
ну или рыть надо в другом месте
Весь мир — Кремль, а люди в нем — агенты
Re[3]: локальный сокет не успевает отправить данные
Здравствуйте, The Passenger, Вы писали:
TP>Здравствуйте, SkyDance, Вы писали:
TP>>>кто что пробовал как решали?Важное замечание — сокет локальный, при удаленном вроде все работате нормально.
SD>>Для локального сокета проблема решается установкой SO_LINGER (setsockopt).
TP>не чета не шибко помогло TP>ну или рыть надо в другом месте
А "мой"