UDP中转服务器

简介:

这个中转服务器是通过UDP协议在一个有公网独立IP的服务器上进行转发消息,从而达到一种群聊的效果,让连接上这个中转服务器的客户端之间能够互相发消息。

首先编写UDP中转服务器类,这个服务器是线程池做的多线程服务器,这个服务器能记录连接的服务器客户端IP和端口。但是由于UDPTCP不同,UDP无法建立长时间的连接,无法建立长时间的连接的话,我们怎么知道客户端是连接着还是断开的状态呢?还有如果客户端更换了IP和端口的话,如何对之前记录的IP端口信息进行删除呢?这时候就需要用到“心跳包”的方式来确认客户端的状态和信息了,心跳包就是让客户端每隔两秒发送一次客户端的信息,例如IP、端口、时间等等,如果客户端超过五秒还没有发送心跳包的话,这个客户端就会被判定为断开状态,然后这些信息还会跟随一个md5,所以我们可以使用Hashtable集合来存储这些信息,使用md5作为键值,就可以方便的通过键值取值了。

因为心跳包要接收客户端的发送的数据信息,然后这些信息中的IP信息也要转发到其他的客户端上,所以我们还需要编写一个客户端的信息封装类。

UDP中转服务器类代码示例:

1e29f937751e98ec754991d31ead948b.png

499dd65997e78e9f5ee98ae8d38ca938.png

e928da1dc1960a722bd7e8546f141ba3.png



客户端信息封装类代码示例:

ae65ed75e209c93a662d0339c2c253f5.png

01ed0d6b7720c1e83abcc1dc6e38a541.png




编写好服务器后,接下来就是编写客户端了,首先绘制一个图形界面,界面上会有两个按钮,一个按钮是用来连接服务器IP的,一个按钮是用来发送消息的。所以需要用委托事件模式,使用监听器监听这个两个按钮,当被点击的时候就执行相应的代码。

  然后还需要编写一个客户端服务类,这个类要完成向服务器发送心跳包数据还有消息数据和连接服务器的IP等业务,还有显示服务器上转发过来的消息,将消息显示到图形界面上。

图形界面代码示例:

a0e2e7e45f82e7c0618da8050f1c3fd1.png

04b722f2a526496b9c5c7455310b4ac8.png

b899bd5ea989a3df8b9e0a3851f9a410.png




客户端服务代码示例:

228465e7ccc7955e59240087d1d02831.png

9b33df89723e3ffc3f03c67f2f1c5ab4.png



运行结果:

94e6bf567d9ab97ead7e834ff1125f8d.png



本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1976693,如需转载请自行联系原作者

相关文章
|
13天前
|
网络协议 Java API
【JavaEE】——Udp翻译器的实现(回显服务器)
网络编程,DatagramSocket 和 DatagramPacket类,回显服务器,服务器实现,客户端实现,
|
3月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
70 2
|
3月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
83 1
|
6月前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
237 1
|
7月前
|
网络协议
UDP服务器的并发方案
UDP服务器的并发方案
92 0
|
16天前
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
26天前
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
108 2
|
2月前
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
82 4
|
2月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
66 3
|
2月前
|
网络协议 算法 网络性能优化