博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
socket编程3-Handler
阅读量:4575 次
发布时间:2019-06-08

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

package Chapter3;

import java.io.BufferedReader;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class Handler implements Runnable {

    private Socket socket;

    public Handler(Socket socket) {

        this.socket = socket;
    }

    public void run() {

        try {
            System.out.println("新连接开始" + socket.getInetAddress() + ":"
                    + socket.getPort());
            BufferedReader br = getReader(socket);
            PrintWriter pw = getWriter(socket);
            String msg=null;
            while((msg=br.readLine())!=null){
                System.out.println(msg);
                pw.println(echo(msg));
                if(msg=="bye"){
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(socket!=null)
                try {
                    socket.close();
                    System.out.println("连接已关闭");
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }

    private String echo(String msg) {

        return "echo" + msg;
    }

    private BufferedReader getReader(Socket socket) throws IOException {

        InputStream socketIn = socket.getInputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(socketIn));
        return br;
    }

    private PrintWriter getWriter(Socket socket) throws IOException {

        OutputStream socketOut = socket.getOutputStream();
        PrintWriter pw = new PrintWriter(socketOut, true);
        return pw;
    }
}

转载于:https://www.cnblogs.com/stay-sober/p/4158801.html

你可能感兴趣的文章
初识go
查看>>
将一张表中的部分记录插入到另一张表中
查看>>
晒一个山寨版的快盘----在.net下使用快盘API
查看>>
angular4路由设置笔记
查看>>
Oracle数据库的基础(1)
查看>>
关于Store Apps
查看>>
实现ajax
查看>>
【C#文件夹锁】C#文件夹加锁小工具
查看>>
mysql 数据库路径
查看>>
web服务器负载均衡部署及实现
查看>>
13.JOIN
查看>>
省市县三级联动
查看>>
多IP地址--笔记
查看>>
react native开发日记
查看>>
Virtual Dom是什么
查看>>
阶乘之和
查看>>
Unable to instantiate receiver xxx.receiver.NetworkReceiver异常
查看>>
C++调用C#类库函数
查看>>
vs2013编译项目去掉warning信息
查看>>
ASP.NET MVC html help
查看>>