package com.zkzy.fxfh.utils; import java.io.IOException; import java.io.InputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.util.Properties; /** * UDP客户端程序,用于对服务端发送数据,并接收服务端的回应信息. */ public class TalkClientUDP { private byte[] buffer = new byte[1024]; private DatagramSocket ds = null; /** * 构造函数,创建UDP客户端 * @throws Exception */ public TalkClientUDP() 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 host 服务器主机地址 * @param port 服务端端口 * @param bytes 发送的数据信息 * @return 返回构造后俄数据报 * @throws IOException */ public final DatagramPacket send(final byte[] bytes) throws IOException { Properties properties = new Properties(); // InputStream // is=ClassLoader.getSystemResourceAsStream("jdbc.properties"); InputStream is = this.getClass().getResourceAsStream("/config.properties"); properties.load(is); String host = properties.getProperty("zdkzUdpIp"); int port = Integer.parseInt(properties.getProperty("zdkzUdpPort")); if(is!=null){ is.close(); } DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(host), port); ds.send(dp); return dp; } /** * 接收从指定的服务端发回的数据. * @param lhost 服务端主机 * @param lport 服务端端口 * @return 返回从指定的服务端发回的数据. * @throws Exception */ public final String receive() 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 args * @throws Exception */ public static void main(String[] args) throws Exception { TalkClientUDP client = new TalkClientUDP(); String sendMsg="r:LJZ.PLC003.Channel1.LJZ003.V33:1:False:10"; // name = java.net.URLEncoder.encode(sendMsg, "UTF-8"); client.send(sendMsg.getBytes()); String info = client.receive(); System.out.println("服务端回应数据:" + info); } }
最近下载更多
ITfans LV19
2020年12月31日
liuxie LV12
2020年12月14日
cjy123 LV2
2020年4月6日
fanxiaolin84 LV10
2019年12月26日
哈勃8910 LV1
2019年5月18日
l1104119188 LV2
2019年4月23日
1847731288 LV13
2019年4月15日
zyx123452 LV1
2019年3月22日
zhjwgs LV15
2019年3月4日
dasda66 LV1
2018年11月14日