简单的多通信程序实现

本文介绍了如何使用Java实现客户端和服务端的多通信程序。通过多线程技术,实现服务端同时处理多个客户端请求,利用Socket进行通信,结合PrintWriter和BufferedReader进行数据的发送与接收,提供高效的字符读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端通信程序:


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class MultiTalkClient {
    int num;

    public static void main(String[] args) {
        try{
            //首先建立通信所用的套件字
            Socket socket = new Socket("127.0.0.1",4700);
            //键盘输入流
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            //通信输出流
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //通信输入流
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String readline;
            readline = sin.readLine();
            while(!readline.equals("bye")){
                //打印键盘输入的字符串
                os.println(readline);
                //强制输出
                os.flush();
                System.out.println("Client:"+readline);
                System.out.println("Server:"+is.readLine());
                //不断获取键盘的输入
                readline = sin.readLine();
            }
            //关闭输出
            os.close();
            //关闭输入
            is.close();
            //关闭通信连接
            socket.close();

        }catch(Exception e){
            System.out.println("Error"+e);
        }
    }
}

服务端多通信程序


import java.io.IOException;
import java.net.ServerSocket;

public class MultiTalkServer {
    //客户端连接的数量
    static int clientnum= 0;

    public static void main(String[] args) throws IOException {
        //建立服务端连接的套接字
        ServerSocket serverSocket = null;
        //初始化监听为true
        boolean listening = true;
        try{
            serverSocket = new ServerSocket(4700);
        }catch (IOException e){
            System.out.println("Could not listen on port:4700");
            System.exit(-1);
        }
        while(listening){//监听
            new ServerThread(serverSocket.accept(),clientnum).start();
            clientnum++;
        }
        serverSocket.close();
    }
}

使用多线程实现多通信任务


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ServerThread extends Thread {
    Socket socket = null;
    int clientnum;
    //创建构造方法
    public ServerThread(Socket socket,int num){
        //套接字
        this.socket = socket;
        //客户端编号
        clientnum = num +1;
    }
    @Override
    public void run(){
        try{
            String line;
            //Socket输入流
            BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            //Socket输出流
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            //键盘输入流
            BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
            //显示第几个客户端发信息
            System.out.println("Client"+clientnum+":"+is.readLine());
            line = sin.readLine();
            while(line.equals("bye")){
                //打印输出
                os.println(line);
                os.flush();
                //显示服务器从键盘输入的信息
                System.out.println("Server:"+line);
                //从第几个客户端传入的信息
                System.out.println("Clinet:"+clientnum+":"+is.readLine());
                //不断输入
                line = sin.readLine();
            }
            //关闭输出流
            os.close();
            //关闭输入流
            is.close();
            //中断通信连接
            socket.close();
        }catch (Exception e){
            System.out.println("Error:"+e);
        }
    }
}
  • PrintWriter 将对象的格式表示打印到文本输出流。
  • Socket 该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。
  • BufferedReader 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值