ma_gu
1st September 2008, 09:10 AM
my application (visual C++ based, Windows Visual Studio 2005, running on a WM6 HTC ARTEMIS device) uses GPRS for transmitting data to a server.
We have now encountered that GPRS quite often shows outages (even for not moving devices in good GSM coverage areas) and data can not be transmitted.
First, I'm well aware of the fact that voice calls have priority over GPRS data transmission and that, therefore, GPRS might fail during phases of high voice traffic on the GSM network. However, GPRS outages occur quite unpredictable, sometimes during the day, sometimes during night, thus, also in periods where you might expect everybody sleeping and not much vioce calls being performed.
So I had a closer look to the return values when the device tries to establish a connection to the web server (we use HTTP protocol for data transmissions).
I encountered the following behaviour during GPRS outages:
ConnMgrEstablishConnectionSync() returns 0 (=> success)
InternetOpen() returns a valid handle (=> success)
InternetConnect () returns a valid handle (=> success)
HTTPOpenRequest () returns a valid handle (=> success)
HttpSendRequest() returns "true" (=> success?)
InternetReadFile() returns "true" (=> success?), but the "DataReceived" buffer from InternetReadFile remains empty (on success, the server is expected to return a certain code to the client, 0 on success, not-0 on error).
Could such a behaviour be caused by GPRS-outages (but then, why does e.g. the HttpSendRequest() report no error, if obviously no internet connection seems to be present)? Or is it rather likely that the server has problems while GPRS is working perfectly???
We have now encountered that GPRS quite often shows outages (even for not moving devices in good GSM coverage areas) and data can not be transmitted.
First, I'm well aware of the fact that voice calls have priority over GPRS data transmission and that, therefore, GPRS might fail during phases of high voice traffic on the GSM network. However, GPRS outages occur quite unpredictable, sometimes during the day, sometimes during night, thus, also in periods where you might expect everybody sleeping and not much vioce calls being performed.
So I had a closer look to the return values when the device tries to establish a connection to the web server (we use HTTP protocol for data transmissions).
I encountered the following behaviour during GPRS outages:
ConnMgrEstablishConnectionSync() returns 0 (=> success)
InternetOpen() returns a valid handle (=> success)
InternetConnect () returns a valid handle (=> success)
HTTPOpenRequest () returns a valid handle (=> success)
HttpSendRequest() returns "true" (=> success?)
InternetReadFile() returns "true" (=> success?), but the "DataReceived" buffer from InternetReadFile remains empty (on success, the server is expected to return a certain code to the client, 0 on success, not-0 on error).
Could such a behaviour be caused by GPRS-outages (but then, why does e.g. the HttpSendRequest() report no error, if obviously no internet connection seems to be present)? Or is it rather likely that the server has problems while GPRS is working perfectly???