我在
Java中使用套接字时遇到问题:服务器没有响应,也没有抛出异常.
服务器代码:
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); } } }
客户代码:
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); } } }
服务器输出:
Starting chat server using the port : 9999
Server has connected with client /127.0.0.1
客户输出:
Client has connected with server 127.0.0.1:9999
simple message
Sending message: ‘simple message’
请解释服务器无法正常工作的原因.