为什么启动服务端后,客户端收不到来自服务端的数据。
server 代码如下:ackage service;import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server { /**
 * @param args
 */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
     ServerSocket ss = new ServerSocket(20000);
     while(true){
      Socket s = ss.accept();
      OutputStream os = s.getOutputStream();
      os.write("您好,您收到了服务器的新年祝福:".getBytes());
      os.close();
      s.close();
     }
}}
client 代码如下:
package service;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;public class client { /**
 * @param args
 * @throws IOException 
 * @throws UnknownHostException 
 */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
     try{
      Socket socket = new Socket("172.0.0.1",20000); 
     
     BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     String line = br.readLine();
     System.out.println("来自服务器的数据:" + line);
     br.close();
     socket.close();
}catch(ConnectException e){
e.printStackTrace();
}
}
}

解决方案 »

  1.   

    Socket s = ss.accept();
    OutputStream os = s.getOutputStream();所以不能循环接收socket,这两句放到循环外面去,客户端只向服务端发起一次请求,只会产生一个socket,并且不能在循环里关闭socket,将s.close()去掉
      

  2.   

    Socket socket = new Socket("172.0.0.1",20000);本机测试的话,应该是  127.0.0.1 吧
      

  3.   

    同意!!!localhost  也可以
      

  4.   

    关键是要刷新流
    outputStream.flush();
    不然数据根本没写进去