前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java socket通信

java socket通信

作者头像
IT云清
发布2019-01-22 15:10:18
5540
发布2019-01-22 15:10:18
举报
文章被收录于专栏:IT云清IT云清

1.socket通信模型

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

(图片来源:https://www.cnblogs.com/itfly8/p/5844803.html

2.代码示例

2.1服务端
代码语言:javascript
复制
package com.java4all.controller;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Author: yunqing
 * Date: 2018/9/14
 * Description:
 */
public class BeatServer {

    /**server port*/
    public static Integer PORT = 8113;

    public static void main(String[] args){

        //try with resources to close resources
        try(    //服务端
                ServerSocket serverSocket = new ServerSocket(PORT);
                //侦听到此套接字的连接并接受,此方法将一直阻塞,直到建立连接为止。
                Socket socket = serverSocket.accept();
                //接受客户端发送的信息
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //向客户端发送返回信息
                PrintWriter writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true)
        ){
            System.out.println("服务端在等待......");
            int i = 0;
            while (true){
                //读取客户端数据
                String str = reader.readLine();
                if(str.equals("END")){
                    break;
                }
                System.out.println("客户端第"+(++i)+"次发来信息为:"+str);

                //向客户端发送数据
                writer.println("服务器接收到了客户端的消息【"+str+"】"+System.currentTimeMillis());
                writer.flush();
            }
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
}
2.2客户端
代码语言:javascript
复制
package com.java4all.controller;

import java.io.*;
import java.net.Socket;

/**
 * Author: yunqing
 * Date: 2018/9/14
 * Description:
 */
public class BeatClient {

    /**server host*/
    private static String LOCALHOST = "127.0.0.1";
    /**server port*/
    private static Integer SERVERPORT = 8113;

    public static void main(String[] args){
        //try with resources to close resources
        try(    //指定服务器地址和端口
                Socket socket = new Socket(LOCALHOST, SERVERPORT);
                //接受服务器发送的返回消息
                BufferedReader reader =
                        new BufferedReader(new InputStreamReader(socket.getInputStream()));
                //向服务器发送消息
                PrintWriter writer =
                        new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())));
            ){
            for (int i = 1; i <= 10; i ++){
                Thread.sleep(3000);
                //像服务器发送请求
                writer.println("这是我请求服务器的第:"+i+"次,"+System.currentTimeMillis());
                writer.flush();

                //获取服务器的响应信息
                String str = reader.readLine();
                System.out.println(str);
            }
            writer.println("END");
            writer.flush();
        }catch (Exception ex){
            ex.printStackTrace();
        }
    }
}

3测试

先启动服务端,服务端会一直阻塞,等待客户端的请求,再启动客户端: 服务端打印结果如下:

代码语言:javascript
复制
服务端在等待......
客户端第1次发来信息为:这是我请求服务器的第:1次,1536911457490
客户端第2次发来信息为:这是我请求服务器的第:2次,1536911460492
客户端第3次发来信息为:这是我请求服务器的第:3次,1536911463494
客户端第4次发来信息为:这是我请求服务器的第:4次,1536911466494
客户端第5次发来信息为:这是我请求服务器的第:5次,1536911469495
客户端第6次发来信息为:这是我请求服务器的第:6次,1536911472497
客户端第7次发来信息为:这是我请求服务器的第:7次,1536911475499
客户端第8次发来信息为:这是我请求服务器的第:8次,1536911478501
客户端第9次发来信息为:这是我请求服务器的第:9次,1536911481501
客户端第10次发来信息为:这是我请求服务器的第:10次,1536911484501

客户端打印结果如下:

代码语言:javascript
复制
服务器接收到了客户端的消息【这是我请求服务器的第:1次,1536911457490】1536911457490
服务器接收到了客户端的消息【这是我请求服务器的第:2次,1536911460492】1536911460493
服务器接收到了客户端的消息【这是我请求服务器的第:3次,1536911463494】1536911463494
服务器接收到了客户端的消息【这是我请求服务器的第:4次,1536911466494】1536911466494
服务器接收到了客户端的消息【这是我请求服务器的第:5次,1536911469495】1536911469495
服务器接收到了客户端的消息【这是我请求服务器的第:6次,1536911472497】1536911472497
服务器接收到了客户端的消息【这是我请求服务器的第:7次,1536911475499】1536911475499
服务器接收到了客户端的消息【这是我请求服务器的第:8次,1536911478501】1536911478501
服务器接收到了客户端的消息【这是我请求服务器的第:9次,1536911481501】1536911481501
服务器接收到了客户端的消息【这是我请求服务器的第:10次,1536911484501】1536911484501
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.socket通信模型
  • 2.代码示例
    • 2.1服务端
      • 2.2客户端
      • 3测试
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档