帮助文档
专业提供香港服务器、香港云服务器、香港高防服务器租用、香港云主机、台湾服务器、美国服务器、美国云服务器vps租用、韩国高防服务器租用、新加坡服务器、日本服务器租用 一站式全球网络解决方案提供商!专业运营维护IDC数据中心,提供高质量的服务器托管,服务器机房租用,服务器机柜租用,IDC机房机柜租用等服务,稳定、安全、高性能的云端计算服务,实时满足您的多样性业务需求。 香港大带宽稳定可靠,高级工程师提供基于服务器硬件、操作系统、网络、应用环境、安全的免费技术支持。
服务器资讯 / 香港服务器租用 / 香港VPS租用 / 香港云服务器 / 美国服务器租用 / 台湾服务器租用 / 日本服务器租用 / 官方公告 / 帮助文档
Java 简单实现一个 UDP 回显服务器
发布时间:2024-03-06 07:33:10   分类:帮助文档
Java 简单实现一个 UDP 回显服务器 文章目录 UDP 服务端UDP 客户端实现效果UDP 服务端(实现字典功能)总结 UDP 服务端 package network; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class UdpEchoServer { private DatagramSocket socket = null; // 参数是服务器要绑定的端口号 public UdpEchoServer(int port) throws SocketException { socket = new DatagramSocket(port); } // 使用此方法启动服务器 public void start() throws IOException { System.out.println("服务器启动!"); while (true) { // 反复的, 长期的执行针对客户端请求处理的逻辑. // 一个服务器, 运行过程中, 要做的事情, 主要是三个核心环节. // 1. 读取请求, 并解析 DatagramPacket requestPacket = new DatagramPacket(new byte[4096], 4096); socket.receive(requestPacket); // 这样的转字符串的前提是, 后续客户端发的数据就是一个文本的字符串. String request = new String(requestPacket.getData(), 0, requestPacket.getLength()); // 2. 根据请求, 计算出响应 String response = process(request); // 3. 把响应写回给客户端 // 此时需要告知网卡, 要发的内容是啥, 要发给谁. DatagramPacket responsePacket = new DatagramPacket(response.getBytes(), response.getBytes().length, requestPacket.getSocketAddress()); socket.send(responsePacket); // 记录日志, 方便观察程序执行效果. System.out.printf("[%s:%d] req: %s, resp: %s\n", requestPacket.getAddress().toString(), requestPacket.getPort(), request, response); } } public String process(String request) { return request; } public static void main(String[] args) throws IOException { UdpEchoServer server = new UdpEchoServer(9090); server.start(); } } UDP 客户端 package network; import java.io.IOException; import java.net.*; import java.util.Scanner; // UDP 的回显服务器 // 客服端发的请求是什么, 服务器返回的响应就是什么 public class UdpEchoClient { private DatagramSocket socket = null; private String serverIp; private int serverPort; public UdpEchoClient(String ip, int port) throws SocketException { this.serverIp = ip; this.serverPort = port; socket = new DatagramSocket(); } // 让这个客户端反复的从控制台读取用户输入的内容. // 把这个内容构造成 UDP 请求, 发给服务器. 再读取服务器返回的 UDP 响应 // 最终再显示在客户端的屏幕上. public void start() throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("客户端启动!"); while (true) { // 1. 从控制台读取用户输入的内容 System.out.print("-> "); // 命令提示符, 提示用户要输入字符串. String request = scanner.next(); // 2. 构造请求对象, 并发给服务器. DatagramPacket requestPacket = new DatagramPacket(request.getBytes(), request.getBytes().length, InetAddress.getByName(serverIp), serverPort); socket.send(requestPacket); // 3. 读取服务器的响应, 并解析出响应内容. DatagramPacket responsePacket = new DatagramPacket(new byte[4096], 4096); socket.receive(responsePacket); String response = new String(responsePacket.getData(), 0, responsePacket.getLength()); // 4. 显示到屏幕上. System.out.println(response); } } public static void main(String[] args) throws IOException { UdpEchoClient client = new UdpEchoClient("127.0.0.1", 9090); client.start(); } } 实现效果 UDP 服务端(实现字典功能) 只需要继承自之前写的服务端, 然后重写父类 process 方法即可. 添加一些查询字典的逻辑. package network; import java.io.IOException; import java.net.SocketException; import java.util.HashMap; import java.util.Map; public class UdpDictServer extends UdpEchoServer { private Map dict = new HashMap<>(); public UdpDictServer(int port) throws SocketException { super(port); dict.put("cat", "小猫"); dict.put("dog", "小狗"); dict.put("hello", "你好"); } @Override public String process(String request) { return dict.getOrDefault(request, "该词没有查询到!"); } public static void main(String[] args) throws IOException { UdpDictServer server = new UdpDictServer(9090); server.start(); } } 效果 总结 ✨ 本文记录了一个简单的 UDP 回显服务器代码. ✨ 想了解更多计算机网络的知识, 可以收藏一下本人的计算机网络学习专栏, 里面会持续更新本人的学习记录, 跟随我一起不断学习. ✨ 感谢你们的耐心阅读, 博主本人也是一名学生, 也还有需要很多学习的东西. 写这篇文章是以本人所学内容为基础, 日后也会不断更新自己的学习记录, 我们一起努力进步, 变得优秀, 小小菜鸟, 也能有大大梦想, 关注我, 一起学习. 再次感谢你们的阅读, 你们的鼓励是我创作的最大动力!!!!!
香港云服务器租用推荐
服务器租用资讯
·广东云服务有限公司怎么样
·广东云服务器怎么样
·广东锐讯网络有限公司怎么样
·广东佛山的蜗牛怎么那么大
·广东单位电话主机号怎么填写
·管家婆 花生壳怎么用
·官网域名过期要怎么办
·官网邮箱一般怎么命名
·官网网站被篡改怎么办
服务器租用推荐
·美国服务器租用
·台湾服务器租用
·香港云服务器租用
·香港裸金属服务器
·香港高防服务器租用
·香港服务器租用特价