是这样的,我有个C#写的客户端程序需要控制一个充当服务器端的设备。此设备是个单片机控制的电子设备,处理能力很小,所以我的客户端程序需要发送完一个命令,等他返回后在发送下一个命令,并且同一时间只能有一个客户端连接它。但是我需要发送数据的情况却比较多,比如用户点击控制按钮,并且,有一个轮训的程序,一旦发现异常,也要发命令。这些用户操作和轮询可能在同一时间。那么这个程序应该怎么处理这些异步操作呢?
   
  首先,我想用一个长连接,不想发送完一次就断开,因为设备用的gprs,总是连接效率太低。
  那么所有异步情况的发送就都需要这个socket链接,我不太会处理,想单写个发送池,所有需要发送的命令都放入池中,等待发送,并且在接受返回值时对他们的结果进行相应处理。  请问大家有没有更好的方法?
  如果我使用这个方法的话,我用什么来存储这些命令比较好?放在堆栈里?
   
  请大家不吝赐教,谢谢!

解决方案 »

  1.   

    用一个主线程保持连接,另外两个辅助线成,一个控制发送,一个控制异常和接受处理. 如果命令是固定的, 就写在BYTE[]里面,使用的时候就取.
      

  2.   

    http://www.bbs180.com/topictag-29.aspx看一上吧,都是socket实例的。
      

  3.   

    socket建立连接以后,发送数据,它会接收数据,如果超过一定时间没有返回来的数据,socket会自动关闭,这个时候你需要重新实例化socket,重新连接,一直到有数据为止。
    还有一点就是判断它是否处于活动状态,你还要关闭Socket,如果没有关闭,Socket会提示有一个连接。