在tomcat中启动UDP监听为什么接收数据时每一次接收总会间隔4500毫秒左右,上下不会相差几毫秒,我客户端是1秒发送一包。但我在本地测试没有问题环境跟服务器上一样,1秒左右接收一包,很正常,但上传到服务器上就出现前面描述的问题,一直没找到原因。
我服务器用的阿里云服务器,系统为win server 2008,tomcat7跟tomcat6都试了,JDK7。web.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SmartSecurity</display-name>  <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>  <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>
    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!--  --><listener>
   <listener-class>com.demo.UdpServerListener</listener-class>
  </listener>
</web-app>UdpServerListener.java就是启动一个UDP监听。请问各位问题出在哪里?如何解决?多谢!tomcatudp监听接收数据4500

解决方案 »

  1.   

    UdpServerListener继承了ServletContextListener,并重写了contextInitialized方法,这样就可以在tomcat启动时启动UDP监听,UDP接收到数据时交给线程处理数据。
      

  2.   

    contextInitialized方法启动UDP监听。
      

  3.   

    ping的话40-50毫秒左右。你试试放个页面上去 ping一下页面试试
      

  4.   

    UdpServerListener
    相关代码方便的话贴一下
      

  5.   

    try {
    while (true) {
    byte[] buffer = new byte[Const.MAX_UDP_DATA_SIZE];
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

    socket.receive(packet);
    new Thread(new Process(packet)).start();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
      

  6.   

    try {
    while (true) {
    byte[] buffer = new byte[Const.MAX_UDP_DATA_SIZE];
    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);

    socket.receive(packet);
    new Thread(new Process(packet)).start();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }代码没发现问题
      

  7.   

    证实在MAC OS X下没有问题,在WINDOWS下才会出现这种问题,但还是没找到解决的方法,各位知道的请告之。多谢!
      

  8.   

    以为是Tomcat的问题,换了Jetty在MAC OS X下也没问题,在WINDOWS下问题依旧啊。有没有高手遇到过啊,求指点。