21xrx.com
2025-06-26 10:52:48 Thursday
登录
文章检索 我的文章 写文章
我在学习Java课程的时候
2023-06-15 18:39:33 深夜i     11     0

我在学习Java课程的时候,老师要求我们设计并实现一个聊天程序。作为一个喜欢尝试新事物的人,我马上就开始了这项任务。下面我将分享我的经验,并提供一个可供大家参考的代码。

设计思路

要搭建一个Java聊天室,我们需要实现以下功能:

1. 建立连接:使用Java的网络编程,建立客户端和服务端之间的连接通道。

2. 发送和接收消息:客户端和服务端之间可以互相发送和接收消息。

3. 多客户端支持:聊天室需要支持多个客户端同时在线。

4. 用户登陆和注册:每个用户需要有自己的用户名和密码,并且可以注册新用户。

代码实现

为了实现上述设计思路,我们可以使用Java的Socket和ServerSocket类来实现客户端和服务端之间的通信。以下是我编写的Java聊天室的代码:

客户端代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ChatClient {
  public static void main(String[] args) throws Exception {
    Socket socket = new Socket("localhost", 9999);
    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter out = new PrintWriter(socket.getOutputStream());
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    while (true) {
      String msg = reader.readLine();
      out.println(msg);
      out.flush();
      String response = in.readLine();
      System.out.println("Server: " + response);
    }
  }
}

服务端代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
  public static void main(String[] args) throws Exception {
    ServerSocket server = new ServerSocket(9999);
    while (true) {
      Socket socket = server.accept();
      new Thread(new Task(socket)).start();
    }
  }
  private static class Task implements Runnable {
    private Socket socket;
    public Task(Socket socket)
      this.socket = socket;
    
    @Override
    public void run() {
      try {
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream());
        while (true) {
          String msg = in.readLine();
          if (msg.equals("bye"))
            break;
          
          out.println("Server received: " + msg);
          out.flush();
        }
        socket.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}

通过运行以上两个程序,我们就可以在本地运行一个简单的Java聊天室了。

总结

通过这次Java聊天程序的学习,我不仅熟悉了Java的Socket和ServerSocket编程,还学习到了一些Java GUI编程和多线程编程的知识。在这个过程中,我也深刻体会到了程序员的枯燥和乏味,但是当代码最后跑起来时,那种成就感真是让人难以忘记。

  
  

评论区