Что-то в виндовсе не так с UDP
Mar. 29th, 2014 12:46 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Оно тупо не умеет писать и читать тем же сокетом одновременно. Поочередно может, одновременно - нет.
Как только вызываешь асинхронную запись, пока идет асинхронное чтение - бумц! 10054 An existing connection was forcibly closed by the remote host. Учитывая что UDP оно как бы connectionless - выглядит весьма забавно. Дуплексный режим.
Народ в интернетах предлагает эту ересь игнорировать и просто еще раз запускать чтение, но это ж странно как-то.
В принципе, это может быть и неплохо, например можно чтение перенести на другой порт и дать ему приоритет в QoS повыше, получать на него ARQ (Automatic Repeat-reQuest), и отдавать сами ретрансмиты. Oh, wait, тогда опять фуллдуплекс получается же. На линуксе при этом ошибок нет.
Как только вызываешь асинхронную запись, пока идет асинхронное чтение - бумц! 10054 An existing connection was forcibly closed by the remote host. Учитывая что UDP оно как бы connectionless - выглядит весьма забавно. Дуплексный режим.
Народ в интернетах предлагает эту ересь игнорировать и просто еще раз запускать чтение, но это ж странно как-то.
В принципе, это может быть и неплохо, например можно чтение перенести на другой порт и дать ему приоритет в QoS повыше, получать на него ARQ (Automatic Repeat-reQuest), и отдавать сами ретрансмиты. Oh, wait, тогда опять фуллдуплекс получается же. На линуксе при этом ошибок нет.