第三百三十节 Java网络教程 - Java网络UDP服务器

embedded/2024/11/22 8:27:49/

Java网络教程 - Java网络UDP服务器

以下代码显示了如何编写UDP回显服务器:

DatagramSocket socket  = new DatagramSocket(12345);
DatagramPacket packet  = new DatagramPacket(new byte[1024],  1024);
while(true)  {// Receive   the   packet socket.receive(packet);//Send back  the   same packet to the   sender socket.send(packet);
}

Echo 服务器

基于UDP套接字的Echo服务器

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;public class Main {public static void main(String[] args) throws Exception {final int LOCAL_PORT = 12345;final String SERVER_NAME = "localhost";DatagramSocket udpSocket = new DatagramSocket(LOCAL_PORT,InetAddress.getByName(SERVER_NAME));System.out.println("Created UDP  server socket at "+ udpSocket.getLocalSocketAddress() + "...");while (true) {System.out.println("Waiting for a  UDP  packet...");DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);udpSocket.receive(packet);displayPacketDetails(packet);udpSocket.send(packet);}}public static void displayPacketDetails(DatagramPacket packet) {byte[] msgBuffer = packet.getData();int length = packet.getLength();int offset = packet.getOffset();int remotePort = packet.getPort();InetAddress remoteAddr = packet.getAddress();String msg = new String(msgBuffer, offset, length);System.out.println("Received a  packet:[IP Address=" + remoteAddr+ ", port=" + remotePort + ", message=" + msg + "]");}
}

上面的代码生成以下结果。

Echo 客户端

基于UDP套接字的Echo客户端

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;public class Main {public static void main(String[] args) throws Exception {DatagramSocket udpSocket = new DatagramSocket();String msg = null;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("Please enter a  message  (Bye  to quit):");while ((msg = br.readLine()) != null) {if (msg.equalsIgnoreCase("bye")) {break;}DatagramPacket packet = Main.getPacket(msg);udpSocket.send(packet);udpSocket.receive(packet);displayPacketDetails(packet);System.out.print("Please enter a  message  (Bye  to quit):");}udpSocket.close();}public static void displayPacketDetails(DatagramPacket packet) {byte[] msgBuffer = packet.getData();int length = packet.getLength();int offset = packet.getOffset();int remotePort = packet.getPort();InetAddress remoteAddr = packet.getAddress();String msg = new String(msgBuffer, offset, length);System.out.println("[Server at IP  Address=" + remoteAddr + ", port="+ remotePort + "]: " + msg);}public static DatagramPacket getPacket(String msg)throws UnknownHostException {int PACKET_MAX_LENGTH = 1024;byte[] msgBuffer = msg.getBytes();int length = msgBuffer.length;if (length > PACKET_MAX_LENGTH) {length = PACKET_MAX_LENGTH;}DatagramPacket packet = new DatagramPacket(msgBuffer, length);InetAddress serverIPAddress = InetAddress.getByName("localhost");packet.setAddress(serverIPAddress);packet.setPort(15900);return packet;}
}

上面的代码生成以下结果。


http://www.ppmy.cn/embedded/139566.html

相关文章

计算机毕设-基于springboot的二手物品交易系统-的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

Spring Boot技术在实验室信息管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理实验室管理系统的相关信息成为必然。开发合…

近源渗透|HID ATTACK从0到1

前言 对于“近源渗透”这一术语,相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段,实地侵入企业办公区域,利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息,并以隐蔽的…

数据结构——栈、队列

栈 栈的基本概念 1.栈的定义 栈(Stack)是只允许在一端进行插入或删除操作的线性表。 栈顶(Top)。允许插入和删除的一端。入数据,出数据都在栈顶。 栈底(Bottom)。固定的,不允许插入和删除的一端。 空栈。不含任何元素的空表。 栈的操作特性可以明显概括…

2024/11/21 数据结构大题打卡

双亲表示法 2014: 2017: 2022:

同态加密技术与应用场景

【1】应用场景 同态加密(Homomorphic Encryption, HE)是一种加密技术,它允许直接对加密数据进行特定的操作,而不需要先将数据解密。这种特性使得同态加密在保护数据隐私的同时,还能支持数据的处理和分析,因…

Gin 框架中间件详细介绍

基本中间件结构: // 基本中间件函数签名 func MiddlewareName() gin.HandlerFunc {return func(c *gin.Context) {// 处理请求前的逻辑c.Next() // 处理下一个中间件或处理函数// 处理请求后的逻辑} }常用中间件示例: package middlewareimport (&quo…

【NodeJS】Node.js是什么?能做什么?

👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 中级 🙉八股文专题:剑指大厂,手撕 J…