大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java UDP通信简单实现
创新互联是一家专注于网站设计、做网站与策划设计,砀山网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:砀山等地区。砀山做网站价格咨询:18982081108
1、Java实现方式
1)server端
/**
* UDPserver端
* */
public class UdpServer {
// 定义一些常量
private final intMAX_LENGTH = 1024; // 最大接收字节长度
private final intPORT_NUM = 5066; // port号
// 用以存放接收数据的字节数组
private byte[] receMsgs = new byte[MAX_LENGTH];
// 数据报套接字
private DatagramSocket datagramSocket;
// 用以接收数据报
private DatagramPacket datagramPacket;
public UdpServer(){
try {
/******* 接收数据流程**/
// 创建一个数据报套接字,并将其绑定到指定port上
datagramSocket = new DatagramSocket(PORT_NUM);
// DatagramPacket(byte buf[], int length),建立一个字节数组来接收UDP包
datagramPacket = new DatagramPacket(receMsgs, receMsgs.length);
// receive()来等待接收UDP数据报
datagramSocket.receive(datagramPacket);
/****** 解析数据报****/
String receStr = new String(datagramPacket.getData(), 0 , datagramPacket.getLength());
System.out.println("Server Rece:" + receStr);
System.out.println("Server Port:" + datagramPacket.getPort());
/***** 返回ACK消息数据报*/
// 组装数据报
byte[] buf = "I 悔困掘receive the message".getBytes();
DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, datagramPacket.getAddress(), datagramPacket.getPort());
// 发碧核送消息
datagramSocket.send(sendPacket);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭socket
if (datagramSocket != null) {
datagramSocket.close();
}
}
}
}
2)client
/***
* UDPclientClient端
***/
public class UdpClient {
private String sendStr = "SendString";
private String netAddress = "127.0.0.1";
private final intPORT_NUM = 5066;
private DatagramSocket datagramSocket;
private DatagramPacket datagramPacket;
public UdpClient(){
try {
/*** 发送数据***/
// 初始化datagramSocket,注意与前面Server端实现的差别
datagramSocket = new DatagramSocket();
// 使用DatagramPacket(byte buf[], int length, InetAddress address, int port)函数组装发送UDP数据报
byte[] buf = sendStr.getBytes();
InetAddress address = InetAddress.getByName(netAddress);
datagramPacket = new DatagramPacket(buf, buf.length, address, PORT_NUM);
// 发送数据
datagramSocket.send(datagramPacket);
/*** 接收数据***/
尺肢 byte[] receBuf = new byte[1024];
DatagramPacket recePacket = new DatagramPacket(receBuf, receBuf.length);
datagramSocket.receive(recePacket);
String receStr = new String(recePacket.getData(), 0 , recePacket.getLength());
System.out.println("Client Rece Ack:" + receStr);
System.out.println(recePacket.getPort());
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭socket
if(datagramSocket != null){
datagramSocket.close();
}
}
}
}
需要。
在系统和业务级别上加入一些日志代码,记录一些日志信息,方便我们在发现告袭问题的时候查找。
把验证过后的字节码发送到“Java解释器”和“及空升时编译器”交给“Java运行系统”运行。
Java探针,字节斗友老码增强的方式就是利用Java代理,这个代理是运行方法之前的拦截器。
在JVM加载Class二进制文件的时候,利用ASM动态的修改加载的Class文件,在监控的方法前后添加需要监控的内容。
在Java应用中,可以使用动态探针来收集运行时的统计数据,以此来帮助优化性能。想要实现动含孙态探针的加载和关闭可以通过命令行参数来实现樱唤。具体地,可以使用-javaagent选项和指定的动态探针jar包路径来加载探针,在程序结束时,调用钩子方法关闭探针。在代码中,可以使用Runtime类的addShutdownHook方法注册一个优雅停机的钩子,这里可以先定义一个实现了Runnable接口的对象,当JVM需要或必须谈颂链退出时将自动调用它的run()方法。在run方法中,释放相关资源和关闭动态探针,以确保应用正常退出。