syslog客户端java实现

微信扫一扫,分享到朋友圈

syslog客户端java实现
1 //package com.tony.util;
2 import java.io.*;
3 import java.net.*;
4
5 /**
6  * UDP客户端程序,用于对服务端发送数据,并接收服务端的回应信息.
7  * Title: SyslogClient
8  * Description: none
9  * Copyright @ 2012~2015 HP<br>
10  * @author Tony
11  * @createDate 2015年8月18日
12  * @version v1.0
13  */
14 public class SyslogClient {
15     private byte[] buffer = new byte[1024];
16
17     private DatagramSocket ds = null;
18
19     /**
20      * 构造函数,创建UDP客户端
21      * @throws Exception
22      */
23     public SyslogClient() throws Exception {
24         ds = new DatagramSocket();
25     }
26
27     /**
28      * 设置超时时间,该方法必须在bind方法之后使用.
29      * @param timeout 超时时间
30      * @throws Exception
31      */
32     public final void setSoTimeout(final int timeout) throws Exception {
33         ds.setSoTimeout(timeout);
34     }
35
36     /**
37      * 获得超时时间.
38      * @return 返回超时时间
39      * @throws Exception
40      */
41     public final int getSoTimeout() throws Exception {
42         return ds.getSoTimeout();
43     }
44
45     public final DatagramSocket getSocket() {
46         return ds;
47     }
48
49     /**
50      * 接收从指定的服务端发回的数据.
51      * @param lhost 服务端主机
52      * @param lport 服务端端口
53      * @return 返回从指定的服务端发回的数据.
54      * @throws Exception
55      */
56     public final String receive(final String lhost, final int lport)
57             throws Exception {
58         DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
59         ds.receive(dp);
60         String info = new String(dp.getData(), 0, dp.getLength());
61         return info;
62     }
63
64     /**
65      * 关闭udp连接.
66      */
67     public final void close() {
68         try {
69             ds.close();
70         } catch (Exception ex) {
71             ex.printStackTrace();
72         }
73     }
74
75     /**
76      * 向指定的服务端发送数据信息.
77      * @param host 服务器主机地址
78      * @param port 服务端端口
79      * @param bytes 发送的数据信息
80      * @return 返回构造后俄数据报
81      * @throws IOException
82      */
83     public final DatagramPacket send(final String host, final int port,
84             final byte[] bytes) throws IOException {
85         DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress
86                 .getByName(host), port);
87         ds.send(dp);
88         return dp;
89     }
90
91     /**
92      * 测试客户端发包和接收回应信息的方法.
93      * @param args
94      * @throws Exception
95      */
96     public static void main(String[] args) throws Exception {
97         SyslogClient client = new SyslogClient();
98         //这里我们在本机测试,使用本机IP即可
99         String serverHost = "192.168.2.71";
100         int serverPort = 514;
101         int i = 0;
102         while (true){
103             String log = "test syslog --- " + i++;
104             client.send(serverHost, serverPort, log.getBytes());
105             Thread.sleep(1000);
106         }
107      //   String info = client.receive(serverHost, serverPort);
108      //   System.out.println("服务端回应数据:" + info);
109     }
110 }

通过wireshark抓包:

微信扫一扫,分享到朋友圈

syslog客户端java实现

戴尔 G5 SE 5505 星河银版上架:AMD Ryzen 7 4800H+RX 5600M

上一篇

好音质的秘密 vivo TWS Neo搭载14.2mm超大单元

下一篇

你也可能喜欢

syslog客户端java实现

长按储存图像,分享给朋友