//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 = "192.168.2.71";
int serverPort = 514;
int i = 0;
while (true){
String log = "test syslog --- " + i++;
client.send(serverHost, serverPort, log.getBytes());
Thread.sleep(1000);
}
// String info = client.receive(serverHost, serverPort);
// System.out.println("服务端回应数据:" + info);
}
}

通过wireshark抓包:

syslog客户端java实现的更多相关文章

  1. elasticsearch 5.0 获取 TransportClient 操作客户端java API

    本文转载自:http://blog.csdn.net/likui1314159/article/details/53233881 elasticsearch 5.0 获取 TransportClien ...

  2. webservice 的wsdl文件生成客户端java类

    提供两个方法: 第一个: 发布webservice项目后, 地址栏地址  http://localhost:8888/lxitedu.webservice.cxf-ch2/services/userS ...

  3. Redis客户端Java服务接口封装

    最近在学习Redis并集成到Spring中去,发现Spring的RedisTemplate并不好用,还没有MongoTemplate好用. 而且发现Jedis和ShardedJedis的方法非常多,覆 ...

  4. Java邮件服务学习之三:邮箱服务客户端-Java Mail

    一.java mail的两个JAR包 1.mail.jar:不在JDK中,核心功能依赖JDK4及以上,该jar包已经加入到java EE5: 下载地址:http://www.oracle.com/te ...

  5. thrift例子:python客户端/java服务端

    java服务端的代码请看上文. 1.说明: 这两篇文章其实解决的问题是,当使用python去访问大数据线上集群的时候,遇到两个问题: 1)python-hadoop和python-hive相关包链接不 ...

  6. 使用HDFS客户端java api读取hadoop集群上的信息

    本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...

  7. Mysql事务开启方式(客户端+java手动+Spring Boot)

    一:概念 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.举例 我们需要向数据库插入3条数据(我们希望这三条数据要么全部插入成功,要么全部失败), 比如第一条数据插入成功,插入第二条数据 ...

  8. HBase学习笔记1 - 如何编写高性能的客户端Java代码

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/5577124.html 客户在使用HBase的时候,经常会抱怨说写入太慢,并发上不去等等.从前我遇到这种情况,一般都二 ...

  9. java 网络编程 TCP协议 java 服务器和客户端 java socket编程

    一个 HelloWord 级别的 Java Socket 通信的例子.通讯过程:        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求.然后运行 Client 端,客 ...

随机推荐

  1. jquery-----ajax的几种方法

    $.get(url,function(data,status){ if(status == 'success'){ layer.msg(data,{shift:1,time:2000},functio ...

  2. 什么是 Nginx?

    Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse Proxy)方式是指以代理服 ...

  3. 「雕爷学编程」Arduino动手做(40)——旋转编码器模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...

  4. python基本数据类型:字符串及其方法(一)

    大小写转换类 方法一:capitalize()首字母大写字符串 name='hatusne miku' name1=name.capitalize() print(name,name1) 方法二:ti ...

  5. 正确去除隐藏在WordPress系统各处的版本号

    使用WordPress的博主都有一个普遍的意识,就是为了安全而移除WordPress的版本号,以免不良用心的人利用旧版本的漏洞对网站进行攻击. WordPress会在前端代码head中加入以下代码(3 ...

  6. zookeeper配置集群报错Mode: standalone

    按照https://www.cnblogs.com/wrong5566/p/6056788.html 一步步配置好以后,老是启动显示Mode: standalone ,即单机模式启动. 经过排查,排除 ...

  7. Pygame 框架安装教程(Python3.6为例)

    1.python版本是3.6,最新的pygame是1.9.3,这两个最好都用32位的. pygame1.9.3下载地址:http://www.lfd.uci.edu/~gohlke/pythonlib ...

  8. xshell行号显示

    xshell显示行号: 输入命令: vim ~/.vimrc 输入: set nu 之后在打开文件 就可以 看到行号显示.

  9. 巧用 display: contents 增强页面语义

    display: contents 是一个比较陌生的属性,虽然属于 display 这个基本上是最常见的 CSS 属性,但是 contents 这个取值基本不会用到.但是它早在 2016 年就已经得到 ...

  10. 用pandas处理数据遇到的坑

    1.使用pandas.read_csv(filePath)方法来读取csv文件时,可能会出现这种错误:ParserError:Error tokenizing data.C error:Expecte ...