java 网络编程-TCP-多人群聊(自问自答)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 网络编程-TCP-多人群聊(自问自答)相关的知识,希望对你有一定的参考价值。

在线聊天室
服务器:

public class Chat 

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

    System.out.println("服务器启动中...");
    //创建服务器
    ServerSocket server=new ServerSocket(9999);
    //阻塞式等待连接,当客户端Socket创建好以后才开启

    while(true)
    
    Socket client=server.accept();
    System.out.println("一个客户端建立了连接");

    new Thread(()->
        DataInputStream dis = null;
        DataOutputStream dos = null;
        try 
            dis = new DataInputStream(client.getInputStream());
            dos = new DataOutputStream(client.getOutputStream());
         catch (IOException e1) 
            e1.printStackTrace();
        

        boolean flag=true;
        while(flag) 

        String msg = null;
        try 
            msg = dis.readUTF();
            dos.writeUTF(msg);
            dos.flush();
         catch (IOException e) 

            //当断掉客户端连接时,不用循环再读取数据
            flag=false;
        

        //返回消息

        
        try 
            if(null!=dos)
            
            dos.close();
            
         catch (IOException e) 

            e.printStackTrace();
        
        try 
            if(null!=dis)
            
            dis.close();
            
         catch (IOException e) 

            e.printStackTrace();
        
        try 
            if(null!=client)
            
            client.close();
            
         catch (IOException e) 

            e.printStackTrace();
        
    ).start();

    
    

客户端:

public class Client

public static void main(String[]args) throws UnknownHostException, IOException

    System.out.println("客户端启动中...");

    Socket client=new Socket("localhost",9999);
    //客户端发送消息
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    DataOutputStream dos=new DataOutputStream(client.getOutputStream());
    DataInputStream dis =new DataInputStream(client.getInputStream());
    boolean flag=true;

    while(flag) 
    System.out.println("请输入消息");
    String msg=br.readLine();
    dos.writeUTF(msg);
    dos.flush();
    //获取消息

     msg=dis.readUTF();
     System.out.println(msg);
    

     dos.close();
     dis.close();
     client.close();


以上是关于java 网络编程-TCP-多人群聊(自问自答)的主要内容,如果未能解决你的问题,请参考以下文章

Java资深工程师面试之chatGPT自问自答版

自问自答 学习系列:从图像分类,到损失函数,到神经网络

libgdx自问自答

C++自问自答

redis的自问自答

自问自答关于 Swift 的几个疑问