I have a problem with sockets in Java: the server is not responding and no exception is thrown.
Server Code:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; class Server { public static void main(String args[]) { final int time = 75; //boolean CHAT_SESSION_ALIVE = false; int port = 9999; try { System.out.println("Starting chat server using the port : " + port); ServerSocket srvr = new ServerSocket(port); Socket skt = srvr.accept(); System.out.println("Server has connected with client " + skt.getInetAddress()); //CHAT_SESSION_ALIVE = true; PrintWriter out = new PrintWriter(skt.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(skt.getInputStream())); new Thread(new Runnable() { @Override public void run() { while (true) { try { if (in.ready()) { String msg = in.readLine(); System.out.println("receive message: '" + msg + "'"); Thread.sleep(time); } } catch (Exception e) { System.out.println(e); } } } }).start(); new Thread(new Runnable() { @Override public void run() { while (true) { try { Thread.sleep(time); String msg = new Scanner(System.in).nextLine(); System.out.println("Sending message: '" + msg + "'"); out.print(msg); } catch (Exception e) { System.out.println(e); } } } }).start(); //in.close(); //out.close(); //skt.close(); //srvr.close(); } catch (Exception e) { System.out.print(e); } } }
Client code:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; class Client { public static void main(String args[]) { final int time = 75; //boolean CHAT_SESSION_ALIVE = false; int port = 9999; String hostIP = "127.0.0.1"; try { Socket skt = new Socket(hostIP, port); System.out.println("Client has connected with server " + hostIP + ":" + port); //CHAT_SESSION_ALIVE = true; PrintWriter out = new PrintWriter(skt.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(skt.getInputStream())); new Thread(new Runnable() { @Override public void run() { while (true) { try { if (in.ready()) { String msg = in.readLine(); System.out.println("receive message: '" + msg + "'"); Thread.sleep(time); } } catch (Exception e) { System.out.println(e); } } } }).start(); new Thread(new Runnable() { @Override public void run() { while (true) { try { String msg = new Scanner(System.in).nextLine(); System.out.println("Sending message: '" + msg + "'"); out.print(msg); Thread.sleep(time); } catch (Exception e) { System.out.println(e); } } } }).start(); //in.close(); //out.close(); //skt.close(); } catch (Exception e) { System.out.print(e); } } }
Server output:
Starting chat server using port: 9999
The server is connected to the /127.0.0.1 client
Client Output:
The client connected to the server 127.0.0.1:9999
simple message
Sending a message: "simple message"
Please explain why the server is not working properly.
java
IORI YAGAMI
source share