java socket例子(多线程接入多个客户端)

最基本的socket例子:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
public class Server {
   public static void main(String[] args) {
      try {
         ServerSocket ss = new ServerSocket(8888);
         System.out.println("启动服务器....");
         Socket s = ss.accept();
         System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");
         
         BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
         //读取客户端发送来的消息
         String mess = br.readLine();
         System.out.println("客户端:"+mess);
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
         bw.write(mess+"\n");
         bw.flush();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
 
public class Client {
   public static void main(String[] args) {
      try {
         Socket s = new Socket("127.0.0.1",8888);
         
         //构建IO
         InputStream is = s.getInputStream();
         OutputStream os = s.getOutputStream();
         
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
         //向服务器端发送一条消息
         bw.write("测试客户端和服务器通信,服务器接收到消息返回到客户端\n");
         bw.flush();
         
         //读取服务器返回的消息
         BufferedReader br = new BufferedReader(new InputStreamReader(is));
         String mess = br.readLine();
         System.out.println("服务器:"+mess);
      } catch (UnknownHostException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

  

多个客户端同时接入

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(8888);
            System.out.println("启动服务器....");
            while(true){
                Socket s = ss.accept();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try{

                            System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");


                            while(true){
                                BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
                                //读取客户端发送来的消息
                                String mess = br.readLine();
                                System.out.println("收到客户端消息:"+mess);
                                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                                bw.write(mess+"\n");
                                bw.flush();
                                Thread.sleep(1000);
                            }

                        }catch (Exception e){
                            e.printStackTrace();
                        }

                    }
                }).start();
            }


        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

  

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Socket s = new Socket("127.0.0.1",8888);

                    //构建IO
                    InputStream is = s.getInputStream();
                    OutputStream os = s.getOutputStream();

                    while(true){
                        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
                        //向服务器端发送一条消息
                        bw.write("client 1 \n");
                        bw.flush();

                        //读取服务器返回的消息
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
                        String mess = br.readLine();
                        System.out.println("服务器:"+mess);
                        Thread.sleep(1000);
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Socket s = new Socket("127.0.0.1",8888);

                    //构建IO
                    InputStream is = s.getInputStream();
                    OutputStream os = s.getOutputStream();

                    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
                    //向服务器端发送一条消息
                    bw.write("client 2 \n");
                    bw.flush();

                    //读取服务器返回的消息
                    BufferedReader br = new BufferedReader(new InputStreamReader(is));
                    String mess = br.readLine();
                    System.out.println("服务器:"+mess);
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        }).start();
    }
}

  

 

posted @ 2020-10-16 23:22  java12345_com  阅读(178)  评论(0)    收藏  举报