Hi,
I'm very new to socket communication( i started learning yesterday ). I tried to
make a little program myself. The only thing it does is a socket who tells a serversocket the connection succeeded and otherwise.
I ran the program on one computer, everything works fine, but when i want to run it on two computers, my program blocks in the Socket constructor, and after 10 seconds i get a ConnectionException.
Here is the code:
The server main class:
The server socket class :Code:import java.io.IOException;
public class ServerMain {
public static void main(String[] args) throws IOException {
new ServerSocketClass( );
}
}
The SocketHandler class:Code:import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketClass {
protected ServerSocket server;
protected int listenPort;
public ServerSocketClass( ) throws IOException {
super( );
listenPort = 5600;
server = new ServerSocket( listenPort );
acceptConnections( );
}
public void acceptConnections( ) {
new Thread( new Runnable( ) {
@Override
public void run() {
startAccepting( );
}
}).start( );
}
protected void startAccepting( ) {
System.out.println( "aanhet wachten" );
while( true ) {
try {
Socket incoming = server.accept( );
System.out.println( "Er is een socket binnengekomen" );
handleIncomingSocket( incoming );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
protected void handleIncomingSocket( Socket incoming ) {
new Thread( new SocketHandler( incoming ) ).start( );
}
}
The ClientMain class :Code:import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class SocketHandler implements Runnable {
private Socket socket;
public SocketHandler( Socket socket ) {
super( );
this.socket = socket;
}
public void run( ) {
OutputStream output;
try {
output = socket.getOutputStream( );
PrintWriter writer = new PrintWriter( output );
BufferedReader reader = new BufferedReader( new InputStreamReader( socket.getInputStream( ) ) );
System.out.println( reader.readLine( ) );
writer.write( "Connectie terug geslaagd" );
writer.flush( );
output.close( );
} catch (IOException e) {
e.printStackTrace();
}
}
public Socket getSocket( ) {
return socket;
}
}
and finally, the SocketConnectionToServerTest class:Code:public class ClientMain {
public static void main( String[] args) {
new SocketConnectionToServerTest( );
}
}
These are the classes. I get the error on line 18 in class SocketConnectionToServerTest( the socket constructor). I've tried some things, but it didn't work.Code:import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketConnectionToServerTest {
protected Socket connectionSocket;
public SocketConnectionToServerTest( ) {
super( );
try {
connectionSocket = new Socket( "127.0.0.1", 5600 );
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
makeContactToServer( );
}
public void makeContactToServer( ) {
try {
OutputStream output = connectionSocket.getOutputStream( );
BufferedReader reader = new BufferedReader( new InputStreamReader( connectionSocket.getInputStream( ) ) );
PrintWriter writer = new PrintWriter( output );
writer.println( "Connectie gelukt" );
writer.flush( );
System.out.println( reader.readLine( ) );
output.close( );
writer.close( );
reader.close( );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Any suggestions?
Hannes

