Threads for networking and DatagramSocket

by Lex » Wed, 29 Jul 2009 18:42:27 GMT

Sponsored Links
 My Android app is exchanging traffic messages via UDP with a server -
binary messages of up to 60 Bytes. The server I'm using (external,
don't have access to code nor can I convince the developer to change
stuff :( ) is identifying the clients solely through sockets (no other
type of client ID whatsoever), so I need to use the same socket for
receiving and sending. My initial plan was to use separate Threads for
receiving and sending data. The network load depends on the traffic
situation - sometimes there might be a lot of messages coming in,
sometimes only a few. The client also needs to send periodic keep-
alive messages, which are simple, 10 character strings. Now the
problem is that Java's DatagramSocket.receive method() is synchronized
and also blocking as long as there is data to receive, so my sending
thread cannot use the socket for sending anything, which results in
the server kicking off the client because there's no response coming.

My question is, how bad (or not bad) do you think will rejecting the
threads and doing all the networking as described above in the UI
thread be? Of course, if you also have suggestions on how to overcome
the issue, it will be greatly appreciated!



Threads for networking and DatagramSocket

by Roman » Wed, 29 Jul 2009 23:06:49 GMT

 I recommend to keep your data communication separate from the UI. The
UI should be responsive as possible and you don't want to have any
blocking on this level. In general data connectivity is not
predictable and in worse case you are waiting for a response from the
network and blocking your whole UI. For example how would you
interrupt your data communication from UI perspective when you handle
data communication within the UI and your UI is blocked?

Roman Baumgaertner
Sr. SW Engineer-OSDC
T  Mobile stick together
The views, opinions and statements in this email are those of the
author solely in their individual capacity, and do not necessarily
represent those of T-Mobile USA, Inc.


Sponsored Links

Threads for networking and DatagramSocket

by Lex » Thu, 30 Jul 2009 21:47:09 GMT

 Thank You for your advice, Roman. There's a detailed post about my
issue on the Java Sun Forum: ;#10779608



Other Threads

1. Idea for non-US/UK developers with paid apps (was Setup Merchant Account link now available)

That's an interesting idea - I might sign up for something like that. In any
case it will be very interesting first of all to see how well the paid apps
will perform compared to a certain other Application Store.
Another option for me personally would be to take a "field trip" to Germany
and register a company if I get really desperate. I already have bank
accounts setup there and I go there often, so it's not a big deal, but it
really depends on when I can expect Denmark to join the "paid apps club".
/ Mads


2. Dumb question about SMS - what port does a normal text SMS come in...

SMS normally doesn't travel over an IP connection (note that you can
send/receive SMS messages with phones that don't otherwise have a network
connection), so there is no associated port.


3. ViewFlipper & bringChildToFront(View v)

4. open sms database.

5. orange in R.color ?

6. android-framework [Split the Android screen into two parts and run 2 applications simultaneously on both screen]

7. Dumb question about SMS - what port does a normal text SMS come in...