Reputation: 678
I am facing a strange problem, local client tcp-connections (python) to my tcp-server (java, on windows 8 64-bit) are working. For example
Python client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("192.168.2.108", 30000))
s.sendall('Hello, server')
s.close()
successfully connects to 192.168.2.108 at port 30000, and the server prints "Hello, server" on eclipse's console.
If I change the interface to loopback interface, it works too.
If I use the same script on my remote Linux machine (Arch with 3.18.6 kernel, 32-bit, ip: 192.168.2.104) the server won't print out anything.
If I try to connect via nc 192.168.2.108 30000
on my client -> same problem
If I try to connect via telnet 192.168.2.108 30000
on my client -> same problem (telnet: connection timed out)
Here a piece of code which might be important for the problem. The backstory is, the server creates 3 serverSockets with ports 30000, 40000, 50000 each in its own thread.
TCP.java
[...]
// pseudo-code: List<ServerSocket> serverSockets = {serverSocket1 port 30000,
// serverSocket2 port 40000, serverSocket3 port 50000}
[...]
for(ServerSocket serverSocket : serverSockets){
new Thread(new TCPRunnable(serverSocket)).start();
}
[...]
TCPRunnable.java
[...]
public TCPRunnable(ServerSocket serverSocket) {
this.serverSocket = serverSocket;
}
public void run() {
long threadId = Thread.currentThread().getId();
System.out.println(threadId + ": " + serverSocket);
// output: 20: ServerSocket[addr=0.0.0.0/0.0.0.0,localport=30000]
try {
System.out.println("before accept()");
while(true){
System.out.println("before accept() in while-loop");
Socket socket = serverSocket.accept();
String message = readMessage(socket);
System.out.println(threadId + ": " + message );
}
} catch (IOException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
System.out.println("leaving run");
}
[...]
output of `netstat -a | find "30000" to see that the port(s) are listening
TCP 0.0.0.0:30000 be-dsktp:0 LISTENING
TCP [::]:30000 be-dsktp:0 LISTENING
I hope someone can help. Thanks in advance.
Upvotes: 0
Views: 613
Reputation: 678
Firewall was in the way. javaw.exe has to be allowed in firewall.cpl. Thanks Zielu!
Upvotes: 1