FTP2 works great for uploading and downloading in iOS over my WIFI network, but I get a timeout error when trying to use a 3G or 2G network connection.
Chilkat does not directly interact with the layer where 3G, 2G, and WIFI lives. One must first understand the concept of network layers (or the protocol stack), which looks like this:
Application Layer (HTTP, FTP, SSH, SMTP, etc.) Transport Layer (TCP, UDP) Network Layer (IP) Link Layer (Ethernet) Physical Layer
Each layer communicates only with the layer immediately above or below.
Chilkat implements various protocols in the Application Layer, and communicates with the Transport Layer via the traditional socket library (BSD sockets, Winsock, etc.), and more recently with the Windows Runtime Socket API for the Windows UWP/WinRT platform.
3G, 2G, Wifi, etc, exist at the Link and Physical layers. Virtually every application on every operating system communicates only with the transport layer. There's no difference in the implementation (i.e. in Chilkat's implementation) when the software is run on different link/physical layers. There may be differences in expectations for latencies, throughput, etc. In this case, if there is a timeout using 3G, but not Wifi, then the problem has to do with the latencies or congestion of the underlying layers. An application would need to adjust appropriately to either wait longer, or retry on failures caused by the external network.