Re: Please Help!!! - CAsyncSocket::OnReceive Not Working for Microsoft UDP Application (msocudp)
Actually, that's not entirely true. There's still a socket level buffer
where
incoming datagrams are buffered (up to 64K worth of them). Any
datagrams arriving when the socket receive buffer is full are silently
discarded.
--
=====================================
Alexander Nickolov
Microsoft MVP [VC], MCSD
email: agnickolov@mvps.org
MVP VC FAQ: http://vcfaq.mvps.org
=====================================
"Igor Tandetnik" <itandetnik@mvps.org> wrote in message
news:eawG04utIHA.1872@TK2MSFTNGP04.phx.gbl...
"Roshan" <roshan@exeltech.com> wrote in message
news:05455473-b89e-42ec-b1f8-bc11cb0cdc99@24g2000hsh.googlegroups.com
So I'm stumped as to why the OnReceive() callback function in the UDP
socket code doesn't get invoked for all the packets that arrive. For
example, for 10 packets that may be sent by the device, the UDP
application would only receive 9 packets (i.e. OnReceive() only gets
called 9 times instead of 10).
Datagrams arrive faster than you read them. If a datagram arrives while
you haven't yet retrieved a previous one, it's dropped on the floor.
Realize that UDP protocol is inherently unreliable. Datagrams can get
lost, duplicated (the same datagram arriving more than once), and/or
received out of order. It is up to the application to correct for this.
--
With best wishes,
Igor Tandetnik
With sufficient thrust, pigs fly just fine. However, this is not
necessarily a good idea. It is hard to be sure where they are going to
land, and it could be dangerous sitting under them as they fly
overhead. -- RFC 1925