java 监听udp_Java实现Udp网络编程

本文介绍如何使用Java实现UDP网络编程,包括客户端创建UDP监听线程并通知服务器端口,服务器广播客户端信息,以及客户端间直接通过UDP通信。详细展示了代码实现过程和需要注意的细节。
摘要由CSDN通过智能技术生成

在看到本文之前,如果读者没看过笔者的上一个系列 Java实现Socket网络编程,建议先翻阅。

笔者将在上期Demo的基础上,进一步修改和扩展,达到本次Demo的运行效果。

首先展示Demo的演示效果:

初始状态:1个服务器,2个客户端

700e95a45206

Paste_Image.png

检测通信正常:

700e95a45206

Paste_Image.png

断开服务器,再次检测通信正常:

700e95a45206

Paste_Image.png

服务器重新启动,自动刷新:

700e95a45206

Paste_Image.png

添加客户端:

700e95a45206

Paste_Image.png

关于 C(客户端)和 S(服务器)之间的TCP通信,以及 C 检测 S 状态,自动重连等机制,笔者在上期Demo的实现过程中已详细阐述,此处就不再赘述。

我们来看看本次案例的实现需求:

1、服务器支持多客户端访问

2、C和S之间使用TCP连接

3、C和C之间使用UDP直接通信

由于案例需求的步骤1、2已实现,我们对步骤3作如下设计思路:

1、客户端创建监听线程,建立UDP监听端口,并发消息告诉服务器,指定自己的服务端口。

2、服务器得知客户端的服务端口后,广播通知其他客户端,现已登录的客户端服务端口列表。

3、客户端之间直接通过UDP,向指定服务端口发送消息。

值得注意的是,C与C之间要求直接通信,所以必须满足“在服务器关闭的情况下,C与C之间仍能通信”的情况,而不是借助服务器完成间接通信

首先,我们创建客户端监听线程,并发消息告诉服务器

public void run() {

try {

DatagramSocket server = new DatagramSocket(0);// 随机分配一个端口号

// 向服务器发送接收客户端的DatagramSocket的端口号

String message = Common.SPECIAL;

String t = "" + server.getLocalPort();

ClientMain.frame.setTitle("client " + t);

String c = "" + t.length();

if (c.length() < 2) {

c = "000" + c;

} else if (c.length() < 3) {

c = "00" + c;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值