package com.hxzk.udp; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import java.util.List; import java.util.Vector; import javax.annotation.PostConstruct; import com.hxzk.pojo.TbSystem; import com.hxzk.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** 该类用于UDP转发数据到指定端口地址 */ @Component public class Udp_Out { @Autowired private SystemService systemService; public static Udp_Out udpout; @PostConstruct //关键四:通过@PostConstruct注解实现注入 public void init() { udpout = this; } /** * 实现UDP转发 * * @param data * 需要转发的数据 * @param lenth需要转发的数据长度 * @param type需要转发的数量类型 * @throws IOException */ /**将数据发送cs端*/ public static void udp_to_cs(String message) { DatagramPacket packet=null; DatagramSocket socket =null; InetAddress address=null; List system = udpout.systemService.findsystem(); int port = Integer.parseInt(system.get(0).getCsUdp()); String ip = "127.0.0.1"; byte[] data = null; try { data = message.getBytes("gbk"); } catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } int length=data.length; try { address=InetAddress.getByName(ip); } catch (UnknownHostException e) { e.printStackTrace(); } //如果数据类型相同 try { socket = new DatagramSocket(); } catch (SocketException e) { e.printStackTrace(); } packet=new DatagramPacket(data, length, address, port); try { socket.send(packet); } catch (IOException e) { e.printStackTrace(); } socket.close(); } }