本帖最后由 yayiba2020 于 2011-07-05 14:33:28 编辑

解决方案 »

  1.   

    从newSocket = socket.Accept()开始的code应该处于循环中。
      

  2.   

    socket.Accept() 我觉得还是应该放到循环外,因为它是阻塞方法,我这里每次调用都会阻塞半分钟左右。这段时间如果有数据来,我是接不到的。
      

  3.   

    如果放到循环外, 肯定只有一个socket收到
      

  4.   

    放到外只能接收到一个socket,应该将监听的代码放到线程中或者是使用BeginAccept方法。
      

  5.   

    socket.Accept() 要放到循环内,你自己测试一下就知道了。
      

  6.   

    我把socket.Accept() 放到了循环内,能收了多个DTU发来的数据。
    但是出现了一个问题:每次调用socket.Accept()或异步的BeginAccept方法,都会阻塞两分钟左右后才能收到数据,这导致DTU设备每隔几秒都会发数据,但我每隔两分钟才能处理一次数据。有没有办法能够避免阻塞,或让阻塞时间短一些呢?
      

  7.   

    应该是说DTU设备每隔几秒都会发数据,但我每隔两分钟才能收到一次数据。