Pushing data to a PDA over GPRS

G

Guest

Hi there,

My quest is to redevelop an application which sends jobs to engineers PDAs
via sockets over GPRS.

At the moment i use a pull method, it polls every 5 minutes for new data.

I now want to be able to push data to my PDAs, however after looking into
this somewhat i've learnt that GPRS provides (in the uk) issue local IP
addresses which aren't public addressable. Ah, problem.

I have heard that you can open a socket on the PDA which communicates with
the server and that socket is held open so the server can send information
back down that same socket as long as the client is connected.

My sockets experience is pretty limited so i'm not exactly sure how to do
this, would anyone have any examples or anything to point me in the right
direction?

Really appreciate any help on this.

Many thanks
Rob Saville
 
G

Guest

Maintaining an always-open socket is going to get really expensive. Stick
with polling unless the phone is already doing something similar (like
getting email with direct push from exchange) in which case you could
leverage that transport to notify the device that new data exists (kind of
like the upcoming CF 3.5 WCF stuff does).


--

Chris Tacke, Embedded MVP
OpenNETCF Consulting
Managed Code in an Embedded World
www.OpenNETCF.com
 
G

Guest

Hi Chris,

Just out of interest why does it get really expensive? If it doesn't send
any data across how does it run up the bill?

We are currently looking at using a seperate APN with static IPs.

Unfortunately the pull method is quite expensive as well as we're having to
check for new data every minute or so.

Any other good ideas?

Thanks
rob
 
G

Guest

The socket won't just "remain open" with no transmission - a keep-alive
packet must be maintained or it will get shut down automatically (that's how
it knows it's not just some dead, unconnected socket sitteng out there).


--

Chris Tacke, Embedded MVP
OpenNETCF Consulting
Managed Code in an Embedded World
www.OpenNETCF.com
 
D

Dick Grier

Hi,

What some people do (I'd be inclined to do this until the state-of-the-art
improves to support "push"), is to use an SMS message from server to client
to notify the client to "call-back" to get the real message data. This
probably is the lowest cost mechanism. It also allows small messages to
simply be included in the SMS, while retaining the full bandwidth to "pull"
a large message, such as a database update.

Dick

--
Richard Grier, MVP
Hard & Software
Author of Visual Basic Programmer's Guide to Serial Communications, Fourth
Edition,
ISBN 1-890422-28-2 (391 pages, includes CD-ROM). July 2004, Revised March
2006.
See www.hardandsoftware.net for details and contact information.
 
G

Guest

We currently use the SMS message method to update data on our device. We
implemented a MessageInterceptor with a messageCondition to indicate a
retrieve data message has arrived (We used a specific code in the message
body). We set the InterceptionAction to Notify and delete to prevent the
user from having to process the message and on receipt of our message opened
a connection and retrieved the data.

Rick D.
Contractor
 
G

Guest

This is a very interesting challenge. The only real effective and the low
cost way to enable "push" technology is to have your own leased line APN
which does no NAT (network address translation) so you can actually see the
device on your private network as no NAT occurs. This also implements a more
secure infrastructure than using a public APN and much much more reliable.

You do have a couple of other "issues". Even with a normal private APN, you
will still have dynamic IP addresses on each device (the telecommunications
provider allocates you a range) when it connects to the APN (not connected to
sockets). Of course each time this connection goes down and you reconnect to
the APN, you will get a different IP Address. This is unless you have static
IP addresses as you suggested. But unless you have money to burn or have very
few devices as this costs around £15,000 (or there abouts - Vodafone price)
per IP address! so it is very expensive.

How we handle the change in IP address is every time it changes - which is
not that often, we send a message to our gateway which sends a message via
BizTalk to our backoffice system. So we always know where the devices are.
 
M

Marcel Ruff

Hi Rob,

this is no problem at all.
The PDA opens a socket to a server and keeps it open.
The server tunnels the responses 'in real time' back to the PDA
in the same socket.
When no data flows no money is charged (GPRS, EDGE, UMTS etc).

You can use a framework (http://www.xmlBlaster.org) which allows
to do this with pure C code or with C#, or code it yourself.

Using xmlBlaster has many more benefits for reliable J2ME or WinCE
to server communication and is free for commercials as well.

regards
Marcel

Hi there,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top