上一篇学习了javaIO里面的 PipedReader 和 PipedWriter,这里对两个类做一个小小的练习:实现一个即时消息发送和接收的聊天系统(这里只实现单向发送,双向同理,定义两个管道即可)。

  上一篇关于两个类源码的学习记录:https://www.cnblogs.com/coding-one/p/11351166.html

 

  1. 定义发送者类,PipedSender.java

package com.one.jdksrc.java.io;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PipedWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

/**
 * @author haoya_Coding_one
 * @version 1.0
 * @create 2019/7/23 17:59
 * @description TODO
 */
public class PipedSender implements Runnable {
    private PipedWriter pipedWriter = new PipedWriter();
    private String stdInput = "";
    Scanner scanner = new Scanner(System.in);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public PipedSender(){
    }
    @Override
    public void run() {
        while (!"exit".equalsIgnoreCase(stdInput)){
            try {
                System.out.print(simpleDateFormat.format(new Date()) + " >>:");
                stdInput = scanner.nextLine();
                pipedWriter.write(stdInput);
            } catch (IOException e) {
                System.out.println("发送出错了!");
            }
        }
        try {
            pipedWriter.close();
        } catch (IOException e) {
            System.out.println("关闭流出错了!");
        }
    }

    public PipedWriter getPipedWriter() {
        return pipedWriter;
    }

    public void setPipedWriter(PipedWriter pipedWriter) {
        this.pipedWriter = pipedWriter;
    }

    public void connect(PipedReceiver pipedReceiver){
        try {
            pipedWriter.connect(pipedReceiver.getPipedReader());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
PipedSender.java

相关文章: