本帖最后由 VisualEleven 于 2011-03-17 14:22:11 编辑

解决方案 »

  1.   

    请去查看一下CSMA/CD(带冲突检测的载波监听多路访问)
      

  2.   

    oyljerry,链表没用过,不知怎么用sichuanpb,你指的是识别那个设备吗?那到不用,数据包里有IP 和端口号
      

  3.   

    就是你的服务器端维护客户端的SOCKET连接,删除或者添加,比如accept以后,就要添加,客户端closesocket了以后,你就要删除
      

  4.   

    UDP程序,不存在连接,也不用accept
      

  5.   

    在这个通信中,主机相当于服务端,设备是客户端。
    服务端,也就是主机,开一个UDP端口就可以够用。主机 每次通过ReceiveFrom接收UDP数据的时候,除了返回数据,它也返回对端的IP和UDP端口,你记下来,就可以用IP+UDP端口的组合来标志对应的设备了,也就可以针对某一个具体设备做回应了。至于设备损害或不再需要与主机通信的情况,则可以让主机定时发一自定义的很小的UDP包做心跳,来知道设备是死是活。- 千里孤行
      

  6.   

    开放一个端口足够了,也就这么二十台机器嘛!发送数据时,在客户机上发送数据中,UDP信息头就可以包含客户机的端口号和IP地址,服务器端记下IP和端口号,以此回应。
      

  7.   

    Sorry,看错了,你保存客户端的SOCKADD_IN地址
      

  8.   

    需要个简单的通讯协议,
    比如客户端发起连接请求  bind命令
    服务器收到该命令的回复bindres命令
    此时:A服务器,维护客户端连接链表
              B客户端开接收到bindres开始发送实际数据。
    客户端发送完毕后向服务器端发送断开命令unbind
    服务器收到该命令回复unbindres命令
    此时:A服务器,从客户端链表中删除当前的客户端
              B客户端逻辑断开连接。
      

  9.   

    使用UDP,一个端口够用了,10个设备不成问题。所谓同时反应,其实还是有时间差距的,只是时间非常短,可以认为是同时。写程序时可以用事件选择模型或者overlapped i/o。CAsyncSocket是要经过窗口消息循环的吧?可以查一下,如果是,则不建议使用。
      

  10.   

    直接用socket API来写,多好。