Question

Unexplained connection drop in the middle of an FTP transmission using GPRS

Asked by: Pirie

I have written two applications that communicate with each other via wireless GPRS. One of these applications runs on a Pocket PC under WM5 or WM6 and the other runs on a desktop. Both programs were developed using Visual Basic .Net under Visual Studio 2005.

The desktop application works as a server and continuously 'listens' for the Pocket PC application wanting to connect. The PPC application then requests connection with the desktop app. After the connection is accepted, the PPC app sends a file to the desktop app. To achieve this, an FTP connection is opened and the file is sent as a stream to the desktop app.

The problem:
 
The problem is that, for large files, the open connection is consistently dropped for some reason in the middle od the transmission. When it happens, it is always when the nws.Write statement in the enclosed code snippet is executed. For small data files there is no problem. The problem occurs after "nws.Write has been executed a few times.

It seems to me that the problem is connected with some kind of "maximum duration of transmission" setting. I conclude this since when the PPC is merely in a GPRS area, the connection always seems to be dropped about 15 seconds into the transmission. However, when I am in an area where HSDPA is available and send the same file the transmission gets much further.

There is no timeout explicitely programmed in the application.

I would appreciate any help in solving this (for me) tricky problem.

The following is the source code within the PPC app  which sends the 'file to the server program in the desktop computer: 
 
Try
     Dim BufferSize As Integer = FtpClient.ReceiveBufferSize
 
     nws = FtpClient.GetStream
     If Not nws.CanWrite Or Not nws.CanRead Then GoTo ExitSub
     '---open the file
     Dim fs As New FileStream(FtpFileName, FileMode.Open, FileAccess.Read)
     Dim bytesToSend(CInt(fs.Length) - 1) As Byte
 
     ' Voortgangsscherm tonen
      Dim FileName As String = Strings.Right(FtpFileName, FtpFileName.Length - Strings.InStrRev(FtpFileName, "\"))
     myVoortGang.Visible = True
     myVoortGang.text = TEKST(1033) & " " & FileName  ' 1033="Upload"
     myVoortGang.ProgressBarMax = CInt(fs.Length)
     myVoortGang.ProgressBarValue = 0
     Invoke(delUpdateVoortgang, myVoortGang)
 
     Dim numBytesRead As Integer = fs.Read(bytesToSend, 0, bytesToSend.Length)
     Dim totalBytes As Integer = 0
     For i As Integer = 0 To CInt(fs.Length \ BufferSize)
         '---send the file
         If fs.Length - (i * BufferSize) > BufferSize Then
             nws.Write(bytesToSend, i * BufferSize, BufferSize)
             totalBytes += BufferSize
         Else
             nws.Write(bytesToSend, i * BufferSize, CInt(fs.Length) - (i * BufferSize))
             totalBytes += CInt(fs.Length) - (i * BufferSize)
         End If
         myVoortGang.Visible = True
         myVoortGang.ProgressBarValue = totalBytes
         Invoke(delUpdateVoortgang, myVoortGang)
     Next
     fs.Close()
     nws.Close()
     FtpClient.Close()
     Catch ex As Exception
          GoTo ExitSub
End Try
 
This is received by the following source code in the desktop application::
 
Dim TimeStart As DateTime = Now
Do
     If nws.DataAvailable Then
          'nieuwe data : timeout verlengen
          TimeStart = Now
          '---read the incoming data
          Dim bytesRead As Integer = nws.Read(data, 0, FtpClient.ReceiveBufferSize)
          totalBytes += bytesRead
          fs.Write(data, 0, bytesRead)
     End If
Loop While CInt(Now.Subtract(TimeStart).TotalSeconds) < 2 And totalBytes <> lsFileSize

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2008-06-23 at 11:09:07ID23508480
Tags

vb .net

Topics

General Packet Radio Service (GPRS)

,

Microsoft Visual Basic.Net

,

Windows MobileProgramming

Participating Experts
1
Points
500
Comments
11

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. GPRS & G3￿
    As WML can be implement on WAP phone ? BUT, will WML will also be implement in GPRS and G3 ? Can I get resources from web ? Andrew
  2. GPRS communication
    hi everyone, I am developing a GPRS application on ppc2002.i havent worked on GPRS before sending at commands at the hyperterminal is not working please help e throught this. waiting in anticipication regards mahesh
  3. Migrating to GPRS
    I currently have a Java app. that exchanges some text data w a server using TCP/IP (class Socket). As we look to use it in a laptop and the wireless cards (802.11)have a short range we'd like to give GPRS a try; can you guys give some guidelines to follow?
  4. GPRS to IIS
    this question might be dumb... i am programming for pocket pc with a GPRS modem attached to it. my question is... i want to connect to our IIS server (some servlet/ASP) on the server, do i need any special knowledge of GPRS? or regular socket programming will be enough? from...

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: melmersPosted on 2008-06-25 at 23:18:59ID: 21872149

Have you tried to reduce the buffer size to execute the write method much faster and if your gprs connection drops when you are writing to the stream not all bytes are lost.

The second thougt is when i understand your code you write everytime the full buffer size
what happens when your data is not x * buffersize ?

 

by: PiriePosted on 2008-06-26 at 02:54:01ID: 21873143

I haven't tried reducing the buffer size. Do you think that this would prevent the connection from being dropped in the first place since that is the problem I'm having?

The sending code does not in fact always send a whole buffer for the last/only buffer. This is handled in the Else clause of 'If fs.Length - (i * BufferSize) > BufferSize Then' in the Code Snippet.  

Do you have any ideas as to how to prevent the connection from being dropped at almost exactly the same point (about 15 seconds into the transmission) when I repeatedy send the same large file?

 

by: melmersPosted on 2008-06-26 at 03:12:33ID: 21873218

I think it could be a gprs connection thing because i have seen sometimes when i load huge web pages with my gprs handy then the connection icon goes sometimes away and then the handy connects again without any user action. so i think you should try to reduce the packetsize and/or to implement a resume send function. Are there any exceptions on the ppc side that throws from your code ?

 

by: PiriePosted on 2008-06-26 at 03:46:13ID: 21873376

The only error message I get on the PPC side is something like "Transport connection lost" when the program tries to send the next buffer after a disconnection.  I haven't tried to trap this.

When you talk about implementing a 'resume send' function, do you mean that this is a atandard GPRS function (maybe a setting?) or that I need to program a reconnect myself in VB followed by a  resend from the first frame that failed? Either way, if you have an example of how that should be done I would be grateful if I could receive it.

 

by: melmersPosted on 2008-06-26 at 03:56:01ID: 21873414

When you become the message Transport connection lost then your physical link is dropped and
it has nothing with your code. When you trap this with an try catch block you can try to open the connection again and send the data again. You must look at your desktop application that if your
connection get lost on the ppc is it lost on the app too? if not then you can try to send the failed frame again.

Resume send is not a gprs function, you must implement it by yourself. sorry i have no snippet for
you.

 

by: PiriePosted on 2008-06-26 at 06:51:07ID: 21874748

What I'm really looking for is the reason why the connection is dropped in the first place and how to prevent this. The disconnection happens time after time for large files and always at the same place (after about 15 seconds with an ordinary GPRS speed) so it's systematic and not an occasional fluke. If HSDPA is available then the transmission consistently goes a lot farther and for most files is completed normally.

 

by: melmersPosted on 2008-06-26 at 23:07:40ID: 21881243

Could it be that your destop application resets the connection ?
in the part of the code of desktop application you have included an timeout of 2 seconds.

Loop While CInt(Now.Subtract(TimeStart).TotalSeconds) < 2 And totalBytes <> lsFileSize

when your ppc software needs over 2 second to send your data packet your desktop app exits the loop. you can try to give your ppc more time to send the data

 

by: PiriePosted on 2008-06-27 at 03:07:34ID: 21882144

I increased toe 2 second timeout to a ridiculously high value (2000 seconds) and did a test. Unfortunately, the transmission aborted at the same place in the same way so that's not the answer.

Do you know of any good high level commercial libraries for GPRS file transmission that I could link into my VB.Net applications (also for the Compact Framework on the Pocket PC). Such a library would presumably have extensive facilities for error recovery and resumption of transmission. That could also be a solution as far as I am concerned.

 

by: melmersPosted on 2008-06-27 at 03:15:09ID: 21882177

Sorry i have no idea where you can get an GPRS Library. you can search on www.componentsource.com for a library.
http://www.componentsource.com/products/rebex-ftp-net-cf/summary.html

Have you tried to download/upload a file with another ftp client with your ppc ? if the ftp client software aborts to it could be your ppc which makes the problem.

 

by: PiriePosted on 2008-06-27 at 03:41:48ID: 31469881

Your suggestion 'Could it be that your desktop application resets the computer?' put me on the right track. The problem was not the timeout of 2 seconds but your suggestion caused me to look for other places that could reset the connection. There I found the problem. A separate loop was polling all PPC's via a separate port to see if they were still available and, if not, resetting the connection. Obviously the connection was so busy that the PPC couldn't reply to the polling in time. I confirmed this by temporarilly removing the polling and then the file transmission went through to the end.

Thanks very much for your tip.

 

 

by: PiriePosted on 2008-06-27 at 03:45:20ID: 21882300

Your suggestion 'Could it be that your desktop application resets the computer?' put me on the right track. The problem was not the timeout of 2 seconds but your suggestion caused me to look for other places that could reset the connection.

There I found the problem. A separate loop was polling all PPC's via a separate port to see if they were still available and, if not, resetting the connection. Obviously the connection was so busy that the PPC couldn't reply to the polling in time. I confirmed this by temporarilly removing the polling and then the file transmission went through to the end.

Now to implement  the solution, but that's not so difficult if you have identified the cause.
 
Thanks very much for your tip.

 

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...