LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   Java - sockets ok in Linux, not Win? (https://www.linuxquestions.org/questions/programming-9/java-sockets-ok-in-linux-not-win-359043/)

rylan76 09-01-2005 01:33 AM

Java - sockets ok in Linux, not Win?
 
Hi guys,

This may be a bit OT, but I wonder if anybody else has ever encountered the following:

Sockets - creation works in the JVM on Linux as a browser applet, but fails quitely (no exceptions being thrown) on the Windows JVM.

Where can I start looking?

jlliagre 09-01-2005 02:06 AM

Which JVM ?
What kind of socket ?

rylan76 09-02-2005 08:57 AM

The JVM versions are the official Sun versions for Linux and Windows:

Linux: j2re-1_4_2_05-linux-i586-rpm.bin
Windows: j2re-1_4_2_09-windows-i586-p.exe

The socket that is not being created is the one that must connect to port 21 (the FTP data port) on the target server. The FTP control port socket (port 20) apparently DOES get created by commons.net, since it is possible to pass commands and get responses on Windows JVM's (at least on the 3 different PC's I've tested on) but it appears to be impossible to establish a data socket to FTP port 21 on the Java JVM under Windows.

All permission restrictions have already been waived in an attempt to get the code working on Windows by placing an AllPermissions permission in the relevant java.policy file.

The code referred to runs perfectly under Linux...

Thanks for the response!

jlliagre 09-02-2005 11:43 AM

Turn off the firewall ... maybe.

rylan76 09-03-2005 05:45 AM

Hi

No firewall running - systems all connect straight through a router. The Linux (working) system and the Windows (non-working) systems all go through this same router...

I'm assuming a bug in the windows JVM ...? I. e. I can do nothing about this?

rylan76 09-03-2005 08:42 AM

I have done further testing on this and I have discovered that storeFile attempts to connect to the webserver the applet is running on, NOT the logged in FTP server as is logged in to when that instance of the FTPClient object that is having its storeFile method being called is started to be used.

On all XP machines, this is displayed in the Java console. Lines tagged J are JVM output, lines tagged P is output System.out.prinln'ed by my program:

J1: network: Connecting socket://polard.com:21 with proxy=DIRECT
J2: network: Connecting socket://polard.com:21 with proxy=DIRECT
P1: Connected for initial upload!
P2: Passive mode set
P2: Transferring...
P2: Starting upload now...
*J3: network: Connecting socket://www2a.your-server.co.za:50989 with proxy=DIRECT
Upload failed - storeFile returned false - socket?

The line marked with the asterisk is the error line.

Line J3 should be:

network: Connecting socket://polard.com:20 with proxy=DIRECT

to initate a data port connection (FTP on port 20) with the polard.com server, to start transferring the file. This is NOT what happens - why does it connect to my webserver,

network: Connecting socket://www2a.your-server.co.za:50989 with proxy=DIRECT

instead of polard.com:20? With a random port number? The :50989 changes from run to run.

On the Linux JVM, it looks and works exactly right:

J1: network: Connecting socket://polard.com:21 with proxy=DIRECT
J2: network: Connecting socket://polard.com:21 with proxy=DIRECT
P1: Connected for initial upload!
P2: Passive mode set
P2: Transferring...
P2: Starting upload now...
*J3: network: Connecting socket://polard.com:20 with proxy=DIRECT

So the apparent bug is that on Windows JVMs the commons.net FTP module "forgets" the server it is connected to, trying instead to open a socket to the host the applet is running on, instead of the FTP server connected to and logged in to with the FTPClient object's instances of connect() and login().

Any ideas at all at how to fix this?

jlliagre 09-05-2005 01:33 AM

Well, you have dig deep enough to figure-out where the problem lies, not into Sun's JVM but in Apache jakarta commons.net package.

You can either fix it yourself, as it is open source, or report the issue to Jakarta people.


All times are GMT -5. The time now is 04:24 PM.