1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
public class UdpServer extends Thread implements Runnable { private final int MAX_LENGTH = 1024; private final int PORT = 5060; private DatagramSocket datagramSocket; public void run() { try { init(); while(true){ try { byte[] buffer = new byte[MAX_LENGTH]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); receive(packet); String receStr = new String(packet.getData(), 0 , packet.getLength()); System.out.println("接收数据包" + receStr); byte[] bt = new byte[packet.getLength()]; System.arraycopy(packet.getData(), 0, bt, 0, packet.getLength()); System.out.println(packet.getAddress().getHostAddress() + ":" + packet.getPort() + ":" + Arrays.toString(bt)); packet.setData(bt); response(packet); } catch (Exception e) { e.printStackTrace(); LoggerUtil.error("udp线程出现异常:" + e.toString()); } } } catch (Exception e) { e.printStackTrace(); } }
public void receive(DatagramPacket packet) throws Exception { datagramSocket.receive(packet); }
public void response(DatagramPacket packet) throws Exception { datagramSocket.send(packet); }
public void init(){ try { datagramSocket = new DatagramSocket(PORT); System.out.println("udp服务端已经启动!"); } catch (Exception e) { datagramSocket = null; System.out.println("udp服务端启动失败!"); e.printStackTrace(); } } }
|