顺序跟服务端的对应,说白了这个比服务器端简单一些,就分是io弄出来的还是nio弄出来的,然后就是一些细节了比如socket,InetAddress之类的,还是得多敲,敲多了就熟了。

1 import java.io.*;
 import java.util.*;
 import java.net.*;
 public class EchoClient{
  private String host ="localhost";
  private int port = 8000;
  private Socket socket;
  public EchoClient() throws IOException{
   socket =new Socket(host,port);
   
  }
  public static void main(String[] args) throws IOException{
   new EchoClient().talk();
  }
  private PrintWriter getWriter(Socket socket)throws IOException{
   OutputStream socketOut = socket.getOutputStream();
   return new PrintWriter(socketOut,true);
   
  }
  private BufferedReader getReader(Socket socket)throws IOException{
   InputStream socketIn = socket.getInputStream();
   return new BufferedReader(new InputStreamReader(socketIn));
  }
  public void talk() throws IOException{
   try{
    BufferedReader br = getReader(socket);
    PrintWriter pw = getWriter(socket);
    BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
    String msg = null;
    while((msg = localReader.readLine())!= null){
     pw.println(msg);
     System.out.println(br.readLine());
     if(msg.equals("bye"))
      break;
    }
   }catch(IOException e){
    e.printStackTrace();
   }finally{
    try{
     if(socket != null)
      socket.close();
    }catch(IOException e){
     e.printStackTrace();
    }
   }
  }


}

2这个是用nio写的

import java.net.*;
 import java.nio.channels.*;
 import java.nio.*;
 import java.io.*;
 import java.nio.charset.*;  public class EchoClient2{
  private SocketChannel socketChannel = null;
  public EchoClient2()throws IOException{
   socketChannel = SocketChannel.open();
   InetAddress ia = InetAddress.getLocalHost();
   InetSocketAddress isa = new InetSocketAddress(ia,8000);
   socketChannel.connect(isa);//连接服务器
   System.out.println("与服务器的连接建立成功");
   
   
  }
  private PrintWriter getWriter(Socket socket)throws IOException{
   OutputStream socketOut = socket.getOutputStream();
   return new PrintWriter(socketOut,true);
  }
  private BufferedReader getReader(Socket socket)throws IOException{
   InputStream socketIn = socket.getInputStream();
   return new BufferedReader(new InputStreamReader(socketIn));
  }
  public void talk()throws IOException{
   try{
    BufferedReader br = getReader(socketChannel.socket());
    PrintWriter pw = getWriter(socketChannel.socket());
    BufferedReader localReader = new BufferedReader(new InputStreamReader(System.in));
    String msg = null;
    while((msg = localReader.readLine())!= null){
     pw.println(msg);
     System.out.println(br.readLine());
     if(msg.equals("bye"))
      break;
    }
   }catch(IOException e)
   {
    e.printStackTrace();
   }finally{
    try{
     socketChannel.close();
    }catch(IOException e){
     e.printStackTrace();
    }
   }
  }
  public static void main(String args[])throws IOException{
   new EchoClient2().talk();
  }
 }