new ServerSocket(6656)
有遇到过这样不成功的吗?打印出来是这个
ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=6656]

解决方案 »

  1.   

    Client.java
     -------------
    package com.so;
    import java.net.*;
    import java.io.*;
    public class Client {
     public static void main(String[] args) throws UnknownHostException, IOException {
      //通过服务器的IP或者计算机名+端口号构造socket连接
      Socket server = new Socket(InetAddress.getLocalHost(),8888);
      //通过与服务器的socket连接构造输入流,用与接收服务器返回的消息。
      BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
      //通过与服务器的socket连接构造输出流,用于向服务器端发送消息
      PrintWriter out = new PrintWriter(server.getOutputStream());
      //用后台的输入构造输入流,用于自己输入消息发送给服务端。
      BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));
      
      while(true){
       //读取后台输入的行
       String str = br.readLine();
       //发送给服务端消息
       out.println(str);
       out.flush();
       if("end".equals(str)){
        break;
       }
       //打印服务器端返回的消息
       System.out.println(in.readLine());
      }
      //关闭与服务器端的socket连接。
      server.close();
     }
    }Server.java
    -----------------
    package com.so;
    import java.io.*;
    import java.net.*;
    public class Server {
     public static void main(String[] args) throws IOException {
      //开服务器端的套接字,端口为8888
      ServerSocket server =  new ServerSocket(8888);
      //监听客户端的套接字消息
      Socket client  = server.accept();
      //获得客户端发过来的消息转为输入流
      BufferedReader in =  new  BufferedReader(new InputStreamReader(client.getInputStream()));
      //根据与客户端建立的socket连接获得输出流,构造printwriter的out对象,用于返回给客户端消息
      PrintWriter out = new PrintWriter(client.getOutputStream());
      while(true){
       //读取客户端获得的消息
       String str = in.readLine();
       //输出消息到后台
       System.out.println("Server:"+str);
       //"发送"消息给客户端
       out.println("has receive....");
       out.flush();
       //如果客户端的消息是end命令 则退出程序。
       if("end".equals(str)){
        break;
       }
      }
      //关闭与客户端建立的socket连接
      client.close();
     }
    }