利用UDP实现多用户客户聊天系统

本文档介绍了如何使用Java的UDP协议实现一个多用户聊天系统。客户端连接服务器时需输入昵称,服务器端通过线程读取并转发消息,允许多个客户端同时在线聊天。详细阐述了服务器端和客户端的编程思路及代码实现。

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

读书笔记:《Java语言程序设计》–郭克华

案例介绍

  上一篇博客已经介绍了客户端和服务器的相互通信。但是实际应用中,应该是客户端和客户端聊天,而不是客户端和服务器聊天。客户端和客户端聊天的本质是信息由服务器端转发。因此本篇博客将开发一个支持多个客户端的程序。服务器端界面如图1所示。
这里写图片描述
       图一
  当客户端出现时,需要输入昵称,如图2所示。
这里写图片描述
        图二
  单击“确定”按钮,连接到服务器。如果连接成功服务器回送一个“连接成功”的信息,如图3所示。
这里写图片描述
       图三
  单击“确定”按钮,即可进行聊天。
  为了体现多客户端效果,打开了3个客户端,如图4所示。
这里写图片描述这里写图片描述这里写图片描述
      图四
  在界面下方可以输入消息,按Enter键,消息发出。消息发出后,文本框自动清空。消息发送后,能够让各个客户端收到聊天消息,聊天消息打印在界面上的多行文本框内,在打印聊天信息的同时,还能够打印这条聊天消息的发出人。

编写服务器程序

  要让服务器端能够接受多个客户端的连接。但是,由于和之前写的TCP变成有着较大的区别,需要注意以下几个问题:
  1.由于服务器端不需要知道客户端的连接,服务器端就不需要有现成负责多个客户端连接。
  2.当客户端连接后,服务器端要等待这些客户端传送消息,而事先并不知道客户端什么时候会信息。所有,必须开一个线程,读取客户端发送过来的信息。注意,不需要为每个客户端开一个线程。
  3.服务器收到某个客户端信息之后,需要将其转发给各个客户端,这就需要再服务器端保存各个客户端的地址。但是,地址只能通过DatagramPacket获得,因此,服务器端必须有一个集合来保存所有客户端的地址。每个客户端启动时,可以发给服务器端一个DatagramPacket来告诉服务器它的地址。
  因此整个服务器端程序的基本结构如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值