首页 > 其他 > 详细

(6)优化TCP编写 服务器端同时支持多个客户端同时访问

时间:2020-08-04 18:38:25      阅读:100      评论:0      收藏:0      [点我收藏+]

使用线程池实现服务器端,可以支持同一时间多个客户端发起的请求

一.编写TCP协议服务端

 1 package demo.soket.tcp;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.net.ServerSocket;
 6 import java.net.Socket;
 7 import java.util.concurrent.ExecutorService;
 8 import java.util.concurrent.Executors;
 9 
10 public class TcpService1 {
11 
12     public static void main(String args[]) {
13         System.out.println("tcp服务器启动......");
14         //创建可缓存的线程池
15         ExecutorService executor=Executors.newCachedThreadPool();
16         ServerSocket service=null;
17         try {
18             //创建服务器连接
19             service=new ServerSocket(8080);
20             while(true) {
21                 final Socket accept=service.accept();//阻塞
22                 executor.execute(new Runnable() {
23                     public void run() {
24                         try {
25                             InputStream in = accept.getInputStream();
26                             //将字节流转换为字符串
27                             byte[] b=new byte[1024];
28                             int len=in.read(b);
29                             String str=new String(b,0,len);
30                             System.out.println("服务器接收客户端内容:"+str);
31                         } catch (IOException e) {
32                             e.printStackTrace();
33                         }
34                     
35                     }
36                 });
37             
38             }
39         } catch (IOException e) {
40             e.printStackTrace();
41         }finally {
42             if(service!=null) {
43                 try {
44                     service.close();
45                 } catch (IOException e) {
46                     e.printStackTrace();
47                 }
48             }
49         }
50     }
51 
52 }

 

二.编写TCP协议客服端

客服端一:

package demo.soket.tcp;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient1 {
    public static void main(String[] args) {
        try {
            Socket client=new Socket("127.0.0.1", 8080);
            OutputStream os=client.getOutputStream();
            os.write("我是客户端一".getBytes());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

客服端二:

package demo.soket.tcp;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient2 {
    public static void main(String[] args) {
        try {
            Socket client=new Socket("127.0.0.1", 8080);
            OutputStream os=client.getOutputStream();
            os.write("我是客户端二".getBytes());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

浏览器模拟客户端三:

http://127.0.0.1:8080/

三 .demo运行

技术分享图片

 

(6)优化TCP编写 服务器端同时支持多个客户端同时访问

原文:https://www.cnblogs.com/KdeS/p/13434596.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!