локальный сокет не успевает отправить данные
От: The Passenger Россия  
Дата: 20.09.13 10:11
Оценка:
Собственно сам сабж — есть приложение под винду которое отправляет данные на сокет ( все работает через
синхронный вызов asio, по стеку посмотрел — в конце вызывается WSASend)
И после этого быстренько завершается ... на другой сокет данные то приходят то нет ... судя по всему
приложение успевает прибиться раньше чем данные кудато ушли.

Важное замечание — сокет локальный, при удаленном вроде все работате нормально.

TCP_NODELAY и FlushFileBuffers пробовал — не помогло ... сокет блокирующий

кто что пробовал как решали?
Весь мир — Кремль, а люди в нем — агенты
Re: локальный сокет не успевает отправить данные
От: Nikolay_Ch Россия  
Дата: 20.09.13 20:41
Оценка:
Здравствуйте, The Passenger, Вы писали:

TP>кто что пробовал как решали?

Если ничего больше не помогает, я бы внес в протокол уведомление о получении. Соответственно, и закрывать сокет можно будет после получения подтверждения о получении.
Re[2]: локальный сокет не успевает отправить данные
От: The Passenger Россия  
Дата: 21.09.13 09:25
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

TP>>кто что пробовал как решали?

N_C>Если ничего больше не помогает, я бы внес в протокол уведомление о получении. Соответственно, и закрывать сокет можно будет после получения подтверждения о получении.

ну этото понятно, просто вдруг ктото сталкивался и решил по простому флажок где подпихнуть, хэндл какнить проверить
полагаю проблема завязана с тем что сокет локальный, а он скорее всего пишет в shared files
и гдето толи не успевает дописать, толи файл закрывается до принятия сервером эвента
Весь мир — Кремль, а люди в нем — агенты
Re: локальный сокет не успевает отправить данные
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 23.09.13 10:32
Оценка:
Здравствуйте, The Passenger, Вы писали:

TP>кто что пробовал как решали?

Что говорит ваершарк?
Sic luceat lux!
Re: локальный сокет не успевает отправить данные
От: maxkar  
Дата: 23.09.13 15:12
Оценка:
Здравствуйте, The Passenger, Вы писали:

TP>TCP_NODELAY и FlushFileBuffers пробовал — не помогло ... сокет блокирующий


А shutdown(socket, SD_SEND) или shutdown(socket, SD_BOTH) вызываете?
Re[3]: локальный сокет не успевает отправить данные
От: Nikolay_Ch Россия  
Дата: 23.09.13 17:14
Оценка:
Здравствуйте, 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.

Re: локальный сокет не успевает отправить данные
От: SkyDance Земля  
Дата: 24.09.13 02:55
Оценка: 6 (1)
TP>кто что пробовал как решали?Важное замечание — сокет локальный, при удаленном вроде все работате нормально.

Для локального сокета проблема решается установкой SO_LINGER (setsockopt).
Но вообще — TCP is NOT reliable.
Re[2]: локальный сокет не успевает отправить данные
От: The Passenger Россия  
Дата: 04.10.13 15:46
Оценка:
Здравствуйте, SkyDance, Вы писали:

TP>>кто что пробовал как решали?Важное замечание — сокет локальный, при удаленном вроде все работате нормально.


SD>Для локального сокета проблема решается установкой SO_LINGER (setsockopt).


не чета не шибко помогло
ну или рыть надо в другом месте
Весь мир — Кремль, а люди в нем — агенты
Re[3]: локальный сокет не успевает отправить данные
От: Nikolay_Ch Россия  
Дата: 04.10.13 17:28
Оценка: 2 (1)
Здравствуйте, The Passenger, Вы писали:

TP>Здравствуйте, SkyDance, Вы писали:


TP>>>кто что пробовал как решали?Важное замечание — сокет локальный, при удаленном вроде все работате нормально.


SD>>Для локального сокета проблема решается установкой SO_LINGER (setsockopt).


TP>не чета не шибко помогло

TP>ну или рыть надо в другом месте
А "мой"
Автор: Nikolay_Ch
Дата: 23.09.13
способ пробовали?
Re[4]: локальный сокет не успевает отправить данные
От: The Passenger Россия  
Дата: 07.10.13 14:38
Оценка:
Здравствуйте, Nikolay_Ch, Вы писали:

N_C>А "мой"
Автор: Nikolay_Ch
Дата: 23.09.13
способ пробовали?


немного сложновато для завершения, учитывая что я asio пользую, но все равно спасибо, буду иметь ввиду
Весь мир — Кремль, а люди в нем — агенты
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.