189 8069 5689

Java实现Socket通信简单BIOdemo-创新互联

话不多说,直接上代码和运行结果。

成都创新互联公司是一家专注于做网站、成都网站设计与策划设计,海宁网站建设哪家好?成都创新互联公司做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:海宁等地区。海宁做网站价格咨询:18982081108

服务端代码:

public static void main(String[] args) {
        final int PORT = 8899;
        ServerSocket serverSocket = null;
        BufferedWriter writer = null;
        try {
            serverSocket = new ServerSocket(PORT);
            System.out.println("服务器已启动!正在监听端口"+PORT);
            while (true){
               Socket socket = serverSocket.accept();
                System.out.println("客户端 "+socket.getPort()+" 已连接");
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String message = reader.readLine();
                if (message != null){
                    System.out.println("收到一条来自客户端 "+socket.getPort()+" 发送的消息:"+message);
                }
                //加了\n readLine才能生效
                writer.write("你才是" + message + "\n");
                writer.flush(); //清理缓冲区
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("服务器挂掉了。。再见");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

客户端代码:

   public static void main(String[] args) {
        final String Host = "127.0.0.1";
        final int Port = 8899;
        BufferedWriter writer = null;
        try {
            Socket socket = new Socket(Host,Port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
            String message = console.readLine();
            writer.write(message+"\n");
            writer.flush();

            String responseMsg = reader.readLine();
            System.out.println("收到了来自服务器的回复:" + responseMsg);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("客户端关闭了连接");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

先运行Server代码,此时服务成功启动!:

Java实现Socket通信简单BIO demo

再运行客户端代码,此时服务端和客户端连接成功!:

Java实现Socket通信简单BIO demo

在客户端发送消息:

Java实现Socket通信简单BIO demo

Java实现Socket通信简单BIO demo

多线程版

这个教程是一个多线程的版本,其实就是把服务端的代码中可以复用的部分抽出来单独作为一个内部类,继承Thread,然后在while循环里,每当有一个客户端前来访问,都将开启一个线程专门来处理这个客户端的请求

实际上,上面的极简版本代码,完全也可以多复制几个Client, 然后同时运行,Server端代码会一个个的按照顺序收到客户端的请求并返回对应的结果,while循环永不疲倦,除非断电。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享名称:Java实现Socket通信简单BIOdemo-创新互联
本文网址:http://jkwzsj.com/article/dhjgdp.html

其他资讯