欢迎访问宙启技术站
智能推送

用Java实现基于TCP协议的简单聊天程序

发布时间:2023-06-09 12:07:44

Java可以通过Socket和ServerSocket实现基于TCP协议的简单聊天程序。下面将介绍实现步骤和代码示例。

1. 创建服务端程序

使用ServerSocket创建一个服务端程序,表示服务器端开启一个监听端口等待客户端连接。

package com.chat;

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,监听端口为8888
        ServerSocket serverSocket = new ServerSocket(8888);

        // 等待客户端连接
        System.out.println("等待客户端连接...");
        Socket socket = serverSocket.accept();
        System.out.println("客户端连接成功!");

        // 获取输入输出流
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        // 循环发送消息
        String line = "";
        while (!"exit".equalsIgnoreCase(line)) {
            line = in.readLine();
            System.out.println("收到客户端消息:" + line);

            // 回复客户端消息
            out.println("服务端回复:" + line);
        }

        // 关闭资源
        in.close();
        out.close();
        socket.close();
        serverSocket.close();
    }
}

2. 创建客户端程序

使用Socket创建一个客户端程序,表示客户端连接服务端并发送消息。

package com.chat;

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

public class ChatClient {
    public static void main(String[] args) throws Exception {
        // 创建Socket,连接服务端
        Socket socket = new Socket("localhost", 8888);

        // 获取输入输出流
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        // 循环发送消息
        Scanner scanner = new Scanner(System.in);
        String line = "";
        while (!"exit".equalsIgnoreCase(line)) {
            line = scanner.nextLine();
            out.println(line);

            // 接收服务端消息
            String reply = in.readLine();
            System.out.println("收到服务端消息:" + reply);
        }

        // 关闭资源
        in.close();
        out.close();
        socket.close();
    }
}

3. 运行测试

启动服务器端程序,等待客户端连接。启动客户端程序,连接到服务器端并发送消息。服务器端接收到消息后,回复客户端消息。客户端接收到回复消息后,再次发送消息。重复以上步骤即可进行简单的聊天。

总结:

Java通过Socket和ServerSocket可以实现基于TCP协议的简单聊天程序。需要注意的是,该实现只支持单个客户端和单个服务端的聊天。如果需要支持多个客户端的聊天,需要使用多线程技术。