Java Socket 简单实践

服务端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerSocketTest {
    public static void main(String[] args) {
        try {
            //初始化服务端socket并且绑定9999端口
            ServerSocket serverSocket = new ServerSocket(9999);
            //等待客户端的连接
            Socket socket = serverSocket.accept();
            //获取输入流,并且指定统一的编码格式
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
            //读取一行数据
            String str;
            //通过while循环不断读取信息,
            while ((str = bufferedReader.readLine()) != null) {
                //输出打印
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端

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

public class ClientSocket {
    //初始化一个socket
    static Socket socket;
    //通过socket获取字符流
    static BufferedWriter bufferedWriter;
    //通过标准输入流获取字符流
    static BufferedReader bufferedReader;

    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date firstTime = calendar.getTime();
        // long period = 1000 * 60 * 2; // 执行间隔:2分钟
        long period = 1000 * 1; //1秒执行一次

        Timer timer = new Timer();

        {
            try {
                // host:ip地址  port:端口号
                socket = new Socket("127.0.0.1", 9999);
                bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                bufferedReader = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        timer.schedule(new TimerTask() {
            int i = 0;
            @Override
            public void run() {
                try {
//                    while (i < 20) {
//                    Random random = new Random();
//                    String str = bufferedReader.readLine();
                        String str = String.valueOf(i);
                        System.out.println(str);
                        bufferedWriter.write(str);
                        bufferedWriter.write("\n");
                        bufferedWriter.flush();
                        i++;
//                }
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }, firstTime, period);

    }
}

参考资料

  1. https://www.cnblogs.com/linkenpark/p/11289018.html
  2. https://www.cnblogs.com/blogtech/p/10142212.html
  3. https://blog.csdn.net/qq_41833449/article/details/88822990
  4. https://www.runoob.com/java/net-serversocket-socket.html
  5. https://developer.51cto.com/art/201202/318163.htm
  6. https://www.jianshu.com/p/cde27461c226
  7. https://developer.51cto.com/art/201202/317543.htm
  8. https://blog.csdn.net/songxinfeng1989/article/details/81027156
posted @ 2020-11-12 10:57  MelodyJerry  阅读(87)  评论(0编辑  收藏  举报
没有伞的孩子必须努力奔跑!|
载入天数...载入时分秒...
(っ•̀ω•́)っ✎⁾⁾ 开心每一天