21xrx.com
2024-11-22 14:43:12 Friday
登录
文章检索 我的文章 写文章
我在学习Java课程的时候
2023-06-15 18:39:33 深夜i     --     --

我在学习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编程和多线程编程的知识。在这个过程中,我也深刻体会到了程序员的枯燥和乏味,但是当代码最后跑起来时,那种成就感真是让人难以忘记。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复