需求:對接第三方的日志接口,用udp協議發送syslog日志
核心代碼:
try {
//指定本機端口 用這個端口接收 別人也是給這個端口發
DatagramSocket socket = new DatagramSocket(514);
while (true){
//指定容量
byte[] bytes = new byte[1024];
//創建 接收數據的包
DatagramPacket packet = new DatagramPacket(bytes,bytes.length);
//接收數據
socket.receive(packet);
byte[] arr = packet.getData();
int length = packet.getLength();
System.out.println(new String(arr,0,length,"GBK"));
System.out.println("----------------");
}
}catch (Exception e){
e.printStackTrace();
}
接下來是中文亂碼問題:(上面代碼都有體現下面說的3條)
1. 發送方要用 字符串的字節長度
2. 接收方解碼要和發送方的編碼格式一樣
3. 接收方要用實際接收的數據長度