上一篇,我初步整理了Syslog服務端接收日誌的例子,本篇主要是對客戶端模擬操做的一個基本例子。java
package com.tony.util; import java.io.*; import java.net.*; /** * UDP客戶端程序,用於對服務端發送數據,並接收服務端的迴應信息. * Title: SyslogClient * Description: none * Copyright @ 2012~2015 HP<br> * @author Tony * @createDate 2015年8月18日 * @version v1.0 */ public class SyslogClient { private byte[] buffer = new byte[1024]; private DatagramSocket ds = null; /** * 構造函數,建立UDP客戶端 * @throws Exception */ public SyslogClient() throws Exception { ds = new DatagramSocket(); } /** * 設置超時時間,該方法必須在bind方法以後使用. * @param timeout 超時時間 * @throws Exception */ public final void setSoTimeout(final int timeout) throws Exception { ds.setSoTimeout(timeout); } /** * 得到超時時間. * @return 返回超時時間 * @throws Exception */ public final int getSoTimeout() throws Exception { return ds.getSoTimeout(); } public final DatagramSocket getSocket() { return ds; } /** * 接收從指定的服務端發回的數據. * @param lhost 服務端主機 * @param lport 服務端端口 * @return 返回從指定的服務端發回的數據. * @throws Exception */ public final String receive(final String lhost, final int lport) throws Exception { DatagramPacket dp = new DatagramPacket(buffer, buffer.length); ds.receive(dp); String info = new String(dp.getData(), 0, dp.getLength()); return info; } /** * 關閉udp鏈接. */ public final void close() { try { ds.close(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 向指定的服務端發送數據信息. * @param host 服務器主機地址 * @param port 服務端端口 * @param bytes 發送的數據信息 * @return 返回構造後俄數據報 * @throws IOException */ public final DatagramPacket send(final String host, final int port, final byte[] bytes) throws IOException { DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress .getByName(host), port); ds.send(dp); return dp; } /** * 測試客戶端發包和接收回應信息的方法. * @param args * @throws Exception */ public static void main(String[] args) throws Exception { SyslogClient client = new SyslogClient(); //這裏咱們在本機測試,使用本機IP便可 String serverHost = "127.0.0.1"; int serverPort = 514; client.send(serverHost, serverPort, ("什麼均可以的接收參數").getBytes()); String info = client.receive(serverHost, serverPort); System.out.println("服務端迴應數據:" + info); } }