You may want to look in to "SIP". At the very least, when a client is up
and running - it needs to send a special REGISTER message containing its
name/id to the server. On receiving this the server would associate that
name/id with the source IP address. After this the client needs to send
periodic keep-alives or else the server can delete the mapping.

I recently worked on UDP and you also would like to read about "UDP
punching" if your clients are going to be behind NATs.

On Thu, Oct 18, 2012 at 2:43 AM, Emmanuel Lécharny <elecha...@gmail.com>wrote:

> Le 10/17/12 3:04 PM, Dever, Jeffrey a écrit :
>
>  We have a connection that is currently TCP but are changing it to UDP on
>> both the client and server sides.  It looks like we could just change the
>> SocketConnector to a DatagramConnector and same for the Acceptor and use
>> all the same IoHandler, Decoder etc classes.
>>
>> This does seem to work, but I don't get some of the callbacks when I
>> expect them.  In particular, when I build both endpoints, I don't get a
>> sessionCreated() called on the server when a client connects.  Only when
>> the client sends data does that function get called from the IoHandler.  In
>> my case the client will never send data, only the server does, but the
>> server can't send data since I don't have a session objects.
>>
>> Advice would be helpful.
>>
> Hi Jeffrey,
>
> there is no way for the server to 'know' that the client connects. The
> connection is just used to store the IP in order to check that the incoming
> messages are to be handled or not (you can perfectly receive some messages
> you don't wnat to get, for instance when some broadcast messages are sent).
>
> In other word, it's plain normal that your server does not call the
> SessionCreated event. The only way to do that is to send a message, which
> will trigger the session creation, session that will remain active as soon
> as some other messages are being received before it becomes idle - and get
> discarded.
>
> The way the UDP server handles session is somehow really different in UDP
> compared to TCP. It's also du to he fact that UDP is a connectionless
> protocol, when TCP is connected.
>
> I don't see any simple way to send a direct message from the server to the
> client when you don't have the client IP address...
>
> May be it would be a good extension to MINA to add a way to send a message
> to a session which does not -yet- exist, assuming that there is no real
> difference between a client and a server when it comes to UDP protocol
> handling ?
>
> --
> Regards,
> Cordialement,
> Emmanuel Lécharny
> www.iktek.com
>
>

Reply via email to