JAVA基于TCP的Socket多客户端连接同一服务器使用多线程完成(实现多人聊天功能)

本文通过详细步骤展示了如何使用JAVA创建一个基于TCP的Socket服务器,该服务器能接受多个客户端连接并实现多线程处理。每个客户端包含发送和接收线程,信息中包含发送时间和Socket信息。服务器端会将接收到的消息广播给所有连接的客户端,同时避免了消息的自我接收。案例中,模拟了三个客户端主机1号、2号和3号进行多人聊天的场景。

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

一.题目要求如下:

1.编写客户端程序,连接同一服务器,并实现发送线程和接收线程,发送的信息中应包括“消息+发送时间”,显示消息应包括:“Socket+信息+发送时间”。(GUI实现后续完成)

2.编写服务器端程序,使用TCP Socket启动12345端口,判断该端口是否被占用,可以接收多个客户端的连接(连接成功发出欢迎信息“Welcome”+客户端套接字信息),并将Socket保存在Vector中,将收到的信息转发给所有连接的客户端。(GUI实现后续完成)

二.具体代码实现案例
1.服务器端代码如下:(先有服务器再有客户机,故此处先给出服务器端程序)

package day26.tcp.test;
/*
* 编写服务器端程序,使用TCP Socket启动12345端口,判断该端口是否被占用,可以接收多个客户端的连接
* (连接成功发出欢迎信息“Welcome”+客户端套接字信息),并将Socket保存在Vector中,将收到的信息转
* 发给所有连接的客户端
* */
import java.net.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ServerTest {
    public static void main(String[] args) throws IOException{
        //统计连接客户机并标记,初始为0
        int count = 0;

        //这里用List代替Vector,用来保存客户机的Socket信息
        List<Socket> li = Collections.synchronizedList(new ArrayList<Socket>());
        
        //创建服务器Socket对象
        while(true){
            System.out.println("服务器等待建立连接...");
           
            try (ServerSocket ss = new ServerSocket(12345)) {           //这种方式会自动释放资源
                //监听客户端Socket对象
                Socket s = ss.accept();

                //每次有客户机建立连接就标记加一,并且把其Socket信息添加到集合
                count++;
                li.add(s);

                //启动服务器线程
                new Thread(new UserThread(s,count,li)).start();
                System.out.println("连接成功!");


     
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值