Channel open event for UDP and TCP on bind

fps fred.soulier.ml at gmail.com
Fri Jan 8 06:59:09 EST 2010



Trustin Lee wrote:
> 
> Again, TCP uses one server socket plus many accepted sockets, but UDP
> uses only one server socket to communicate with multiple peers.
> 
> In MINA, I did some sort of emulation similar to your suggestion; MINA
> created multiple virtual session objects for each remote address.
> However, there is no such virtual sessions in Netty anymore - one Netty
> Channel is supposed to handle all messages from all remote addresses.
> 
> To get the remote address of the packet in UDP, you can call
> MessageEvent.getRemoteAddress() at messageReceived().
> 
> So, why no more virtual sessions?  It's because:
> 
> 1) we cannot assume a UDP applications communicate using the same remote
> address because not all UDP applications emulate connection-based
> communication.  You can receive from port 1234 and then send the
> response to port 5678 for example.  To do that, you had to create
> another virtual session in MINA, which is obviously impedance mismatch.
> 
> 2) the virtual sessions require the emulation of session life cycle,
> which leads confusion and complication to UDP programmers.
> 
> Hence, the current behavior of UDP transport fits much better to how UDP
> works actually.
> 
>> I may be overlooking some other aspects of the architecture of Netty so
>> please excuse me if the above doesn't make sense.
> 
> No problem.  It led me to some food for thoughts. :)
> 
> HTH,
> Trustin
> 

Thx Trustin.

So following up on the above I'm assuming that the pipeline for a TCP based
protocol compared to a UDP based protocol cannot be the same.
For example where FrameDecoder or ReplayingDecoder would be used for a TCP
based protocol in order to decode a message as more bytes come in I take it
that for a UDP based protocol we just need to deal with messageReceived(...)
in an UpstreamHandler and that the message received is the full datagram
packet. Effectively for a UDP based protocol you get nothing or everything
(i.e. the entire message).
Is that correct?

Cheers,
Frederic
-- 
View this message in context: http://n2.nabble.com/Channel-open-event-for-UDP-and-TCP-on-bind-tp4260514p4271963.html
Sent from the Netty User Group mailing list archive at Nabble.com.


More information about the netty-users mailing list