通过javaTCP编程实现单向的两客户端基于服务器交流应用

这个小程序只能实现Person1先发送消息,才能实现与Person2的交流,并且每次交流只能单向的发送一条消息

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

public class TwoClient {

}

class Person1 {
    public static void main(String[] args) throws IOException {
        new Thread() {
            boolean flag = false;
            Scanner scanner=new Scanner(System.in);

            @Override
            public synchronized void run() {
                while (true) {
                    Socket socket = null;
                    try {
                        socket = new Socket("127.0.0.1", 4455);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    if (!flag) {

                        OutputStream outputStream = null;
                        try {
                            outputStream = socket.getOutputStream();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        PrintStream printStream = new PrintStream(outputStream);
                        System.out.println("输入类容:");
                        String str=scanner.next();
                        printStream.println(str);
                        flag = true;
                    } else {
                        InputStream inputStream = null;
                        try {
                            inputStream = socket.getInputStream();

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                        String s = null;
                        try {
                            s = bufferedReader.readLine();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        flag = false;
                        System.out.println(s);
                    }
                }
            }
        }.start();
    }
}

class Server2 {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(4455);
        ServerSocket serverSocket2 = new ServerSocket(4456);
        while (true) {
            Socket accept = serverSocket.accept();
            InputStream inputStream = accept.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String s = bufferedReader.readLine();
            System.out.println(s);
            Socket accept2 = serverSocket2.accept();
            OutputStream outputStream2 = accept2.getOutputStream();
            PrintStream printStream = new PrintStream(outputStream2);
            printStream.println(s);

            Socket accept3 = serverSocket2.accept();
            InputStream inputStream3 = accept3.getInputStream();
            BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(inputStream3));
            String str = bufferedReader2.readLine();
            System.out.println(str);
            Socket accept4 = serverSocket.accept();
            OutputStream outputStream4 = accept4.getOutputStream();
            PrintStream printStream4 = new PrintStream(outputStream4);
            printStream4.println(str);
            printStream4.close();
            outputStream4.close();
        }

    }
}

class Person2 {
    public static void main(String[] args) throws IOException {

        new Thread() {
            boolean flag = false;
            Scanner scanner=new Scanner(System.in);
            @Override
            public synchronized void run() {
                while (true) {
                    Socket socket = null;
                    try {
                        socket = new Socket("127.0.0.1", 4456);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    if (!flag) {
                        InputStream inputStream = null;
                        try {
                            inputStream = socket.getInputStream();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                        String s = null;
                        try {
                            s = bufferedReader.readLine();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        System.out.println(s);
                        flag = true;
                    } else {
                        OutputStream outputStream = null;
                        try {
                            outputStream = socket.getOutputStream();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        PrintStream printStream = new PrintStream(outputStream);
                        System.out.println("输入类容:");
                        String str=scanner.next();
                        printStream.println(str);
                        printStream.println(str);
                        flag = false;
                        printStream.close();
                        try {
                            outputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }
        }.start();
    }
}

Person1说 你好
Person说 :你好,很高兴认识你

![在这里插入图片描述](https://img-blog.csdnimg.cn/2019082119504910.png在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值