博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器端与客户端TCP连接入门(三:多线程)
阅读量:6989 次
发布时间:2019-06-27

本文共 2128 字,大约阅读时间需要 7 分钟。

  对于服务器端来说,如果要加入多线程机制,则应该在每个用户连接之后启动一个新的线程

建立一个EchoThread类,此类专门用于处理多线程操作,此时的多线程使用Runnable接口实现

package Socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;/** * 接收每一个客户端的Socket,并通过循环的方式接收客户端的输入信息及向客户端输出信息 */public class EchoThread implements Runnable {        private Socket client=null;      //接收客户端    public EchoThread(Socket client){    //通过构造方法设置Socket        this.client=client;    }    public void run() {        PrintStream out=null;        BufferedReader buf=null;                try {            buf=new BufferedReader(new InputStreamReader(client.getInputStream()));//得到客户端输入信息            out=new PrintStream(client.getOutputStream());//实例化客户端的输出流            boolean flag=true;            while(flag){    //客户端循环操作                String str=buf.readLine();//不断接收信息                if(str==null||"".equals(str)){                    flag=false;                }                else{                    if("bye".equals(str)){    //如果输入bye,结束操作                        flag=false;                    }                    else{                        out.println("ECHO:"+str);//向客户端回显信息                    }                }            }            out.close();            client.close();        } catch (IOException e) {            e.printStackTrace();        }    }}

 

 

是是

package Socket;import java.io.BufferedReader;import java.io.IOException;import java.io.PrintStream;import java.net.ServerSocket;import java.net.Socket;/* * 在服务器端,每一个连接到服务器的客户端Socket都会以一个线程的方式运行, * 这样,无论有多少个客户端连接都可以同时完成操作 */public class EchoThreadServer {    public static void main(String[] args) throws Exception {        ServerSocket server =null;//定义ServerSocket对象        Socket client=null;//定义socket对象,表示客户端                server = new ServerSocket(8888);//此服务器在8888端口进行监听        boolean f=true;        while(f){            System.out.println("服务器运行,等待客户端连接。");            client=server.accept();            new Thread(new EchoThread(client)).start();//实例化并启动一个线程对象        }        server.close();    }}

 

转载于:https://www.cnblogs.com/Donnnnnn/p/6197494.html

你可能感兴趣的文章
MVC中实现部分内容异步加载
查看>>
PTA编程总结2:
查看>>
剑指OFFER——顺时针打印矩阵
查看>>
Live Archive 3490 - Generator 概率
查看>>
洛谷 1417 烹调方案
查看>>
Oracle SQL Developer
查看>>
dede的使用-2
查看>>
C++银行储蓄程序代码
查看>>
Java 线程池框架核心代码分析
查看>>
第六次作业:素数判断及求和
查看>>
「学习笔记——Linux」Linux软件管理(RPM,Dpkg,APT)
查看>>
Soft NMS
查看>>
Linux命令的那些事(二)
查看>>
强制转https
查看>>
Ubuntu下GTK的安装、编译和测试
查看>>
javascript中window.open()与window.location.href的区别
查看>>
Respond.js的作用
查看>>
FCN笔记(Fully Convolutional Networks for Semantic Segmentation)
查看>>
外部线程停止Java子线程的方法
查看>>
OpenMP并行编程
查看>>