基于TCP原理 Socket(套接字)网络编程模拟多个客户端访问服务器

原理的话就是利用Socket来模拟多个客户端向服务器请求 ,
利用一个死循环往里面添加线程。 这个线程的任务就是去通过流来传输和访问客户端与服务器端的数据。
服务器 端 :
1 创建一个服务器套接字
2 调用 accept方法
3 输入和输出流
4 响应客户端的请求
5 关闭。

   #   代码如下
package qf.zz.wjp.day33;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

/*
*
* */
public class Testfuwuqi {
     
    public static void main(String[] args) throws   Exception{
     

//          创建套接字
        ServerSocket   server  =new ServerSocket(666);
        System.out.println("服务器上线 ");

                   while (true){
     
                      Socket  client=  server.accept();

                      Thread  m1 = new Thread(new m1(client));
                      m1.start();




                   }

    }
}

class  m1  implements Runnable {
     
   Socket  client;

    public m1(){
     }

    public m1(Socket  client){
     
        this.client=client ;
    }



//  完成剩下的所有的任务
    public void run() {
     
        System.out.println("线程已启动");
  try {
     
      PrintWriter  pw = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));

      BufferedReader   br = new BufferedReader(new InputStreamReader(client.getInputStream()));

      while(true){
     
          System.out.println(client.getLocalPort());
          pw.println( new Scanner(System.in).next());
          pw.flush();

          System.out.println(br.readLine());

      }


  }catch (Exception e ){
     

  }



    }
}

客户端的话 步骤就是
1 创建套接字
2 输入和输出流
3 通过流发送请求和回应服务器的请求
4关闭

      # 代码如下
package qf.zz.wjp.day33;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.net.Socket;

public class Testkehu {
     
//    客户端
public static void main(String[] args)throws  Exception {
     

    Socket  celient  = new Socket("自己电脑的ip",666) ;
    System.out.println(" 客户端上线。。。。");

    PrintWriter  pw = new PrintWriter(new OutputStreamWriter(celient.getOutputStream()));

    BufferedReader   br = new BufferedReader(new InputStreamReader(celient.getInputStream()));

    while(true) {
     
        System.out.println(celient.getLocalPort());
        pw.println(new Scanner(System.in).next());
        pw.flush();

        System.out.println(br.readLine());


    }
}
}



你可能感兴趣的:(日常学习,java)