java UDP服务端

public class ISSIhttpserverThread extends Thread {
    private int port = 23024;
    DatagramSocket server = null;
    DatagramPacket packets = null;

    private int requestLen = 0;
    private ArrayList<String> headList = new ArrayList<String>();
    private String bodyStr;
    int position = 0;

    public ISSIhttpserverThread() {
    
    }

    @Override
    public void run() {
        //receive();
        
            try {
                 this.port =AgentGlobals.getXMLProperty("pocudpport", 23024);
                    //this.port = 23034;
                
                server = new DatagramSocket(port);
                Log.info("UDP登录port:" + port);
            } catch (Exception e) {
                // TODO: handle exception
            }
        while (true) {
            try {
                // �μ�һ�����ݱ���
                byte[] b = new byte[1024];

                packets = new DatagramPacket(b, b.length);
                server.receive(packets);
                UDPServerThread udpserverthread=new UDPServerThread(packets);
                udpserverthread.start();
            } catch (Exception e) {
                // TODO: handle exception
                System.out.println("e.getMessage():" + e.getMessage());
                Log.info("udp fail");
                try {
                    sleep(5000);
                    new ISSIhttpserverThread().start();
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
            }

    }

    
}
UDPServerThread:
public class UDPServerThread extends Thread {
	DatagramPacket datagrampackets = null;


	// int superport=1024;
	public UDPServerThread(DatagramPacket packetd) {
		this.datagrampackets = packetd;
		Log.info("UDPServerThread");
		Log.info("datagrampacket" + datagrampackets.getPort());

	}

	@Override
	public void run() {
		Log.info("ten");
		
		int ten = datagrampackets.getLength();
		Log.info("ten" + ten);
		if (ten > 0) {

			String msg = new String(datagrampackets.getData(), 0,datagrampackets.getLength());
			InetAddress ip = datagrampackets.getAddress();
			int ports = datagrampackets.getPort();
			Log.info("客户端" + ip + ports + "发来消息:" + msg);
			Document document = null;
			try {
				document = DocumentHelper.parseText(msg);
			} catch (DocumentException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}// 转换document对象
			Element root = document.getRootElement();
			
			//返回客户端消息
			DatagramSocket sockets=null;
			try {
				sockets = new DatagramSocket();
				byte[] buf = null;
				buf = respxml.getBytes();
				DatagramPacket packets = new DatagramPacket(buf, buf.length,
						new InetSocketAddress(ip, ports));
				sockets.send(packets);
				sockets.close();
			} catch (SocketException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}
	}
	

}

  

 

猜你喜欢

转载自www.cnblogs.com/ttqi/p/12204433.html