Archived Forum PostQuestion:
I developed a sshtunnel application for my office with CHILKATSSHLib_TLB. But it fails data communication after few minutes every time. i could not find the reason therefore i coded a simple tunnel application to test. and I found that even without connecting to the real sshtunnel success := sshTunnel.BeginAccepting(listenPort); sends messages as tunnel connecting is success
MESSAGES i gets from my test application with delphi xe3 (and delphi 7)
ChilkatLog:
BeginAccepting:
DllDate: Aug 5 2012
UnlockPrefix: 30-day trial
Username: xxxx
Architecture: Little Endian; 32-bit
Language: ActiveX
VerboseLogging: 0
listenPort: 3316
destPort: 1433
destHostname: myDbServer11111.com
acceptThreadSessionLogPath:
Listen thread started.
Success.
--BeginAccepting
--ChilkatLog
Result = 1
note
there is no server called myDbServer11111.com
there is no server called '192.111.1.111'
so how it does show as Success?
The reason BeginAccepting is successful is because no connection to the destination host:port happens during the BeginAccepting method call.
The BeginAccepting method starts a background thread that will begin accepting incoming connections on the localhost:listenPort. BeginAccepting returns success if the background thread is started, the socket created, and the background thread has begun listening on the listenPort.
At some future point in time, an incoming connection to listenPort might arrive. The background thread accepts it and establishes a connection to the SSH server host:port (not the destination host:port). SSH port forwarding is setup so that data sent to the SSH server is then forwarded (by the SSH server) to the destination host:port, which in your case is myDbServ11111.com.
Note that even when an SSH tunnel is established, it is not your app's background thread that is connected to the destination host:port, it is the SSH server that makes this connection.