一,创建类
二,类
1.ChatSocketServer类
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.Scanner;
  
 /**
  * 发送消息线程
  */
 class Send extends Thread{
     private Socket socket;
     public Send(Socket socket){
         this.socket  =socket;
     }
     @Override
     public void run() {
         this.sendMsy();
     }
     /**
      * 发送消息
      */
     private void sendMsy(){
         Scanner scanner =null;
         PrintWriter pw =null;
         try{
             scanner =new Scanner(System.in);
             pw =new PrintWriter(this.socket.getOutputStream());
             while(true){
                 String str =scanner.nextLine();
                 pw.println(str);
                 pw.flush();
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             if (scanner!=null){
                 scanner.close();
             }
             if (pw!=null){
                 pw.close();
             }
             if (socket!=null){
                 try {
                     socket.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
 }
  
 /**
  * 接收消息的线程
  */
 class receive extends Thread{
     private Socket socket=null;
     public receive(Socket socket){
         this.socket =socket;
     }
  
     @Override
     public void run() {
         this.receiveMsg();
     }
     /**
      * 用于接收对方消息
      */
     private void receiveMsg(){
         BufferedReader br =null;
         try{
             br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
             while(true){
                 String mr = br.readLine();
                 System.out.println("A说:"+mr);
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             if (br!=null){
                 try {
                     br.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
  
         }
     }
 }
  
 public class ChatSocketServer {
     public static void main(String[] args) {
         ServerSocket serverSocket =null;
         try{
             serverSocket =new ServerSocket(8888);
             System.out.println("服务端已启动等待连接");
             Socket socket = serverSocket.accept();
             System.out.println("连接成功!");
             new Send(socket).start();
             new receive(socket).start();
         }catch(Exception e){
             e.printStackTrace();
         }finally {
             if (serverSocket!=null){
                 try {
                     serverSocket.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
 }
2.ChatSocketClient类
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.net.Socket;
 import java.util.Scanner;
  
 public class ChatSocketClient {
     public static void main(String[] args) {
  
         try {
             Socket socket =new Socket("127.0.0.1",8888);
             System.out.println("连接成功!");
             new ClientSend(socket).start();
             new Clientreive(socket).start();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
 /**
  * 用于发送消息线程类
  */
 class ClientSend extends Thread{
     @Override
     public void run() {
         this.sendMsy();
     }
     private Socket socket;
     public ClientSend(Socket socket){
         this.socket  =socket;
     }
     /**
      * 发送消息
      */
     private void sendMsy(){
         Scanner scanner =null;
         PrintWriter pw =null;
         try{
             scanner =new Scanner(System.in);
             pw =new PrintWriter(this.socket.getOutputStream());
             while(true){
                 String str =scanner.nextLine();
                 pw.println(str);
                 pw.flush();
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             if (scanner!=null){
                 scanner.close();
             }
             if (pw!=null){
                 pw.close();
             }
             if (socket!=null){
                 try {
                     socket.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
 }
  
 /**
  *用于接收消息线程类
  */
 class Clientreive extends Thread{
     private Socket socket=null;
     public Clientreive(Socket socket){
         this.socket =socket;
     }
  
     @Override
     public void run() {
         this.receiveMsg();
     }
     /**
      * 用于接收对方消息
      */
     private void receiveMsg(){
         BufferedReader br =null;
         try{
             br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
             while(true){
                 String mr = br.readLine();
                 System.out.println("B说:"+mr);
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             if (br!=null){
                 try {
                     br.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
  
         }
     }
 }
三,结果(先服务  再客户)


