我的问题是这样的:
我要做的是一个服务器软件(server),一个客户端软件(client)
还有一个是硬件产品(box)
server和box之间是TCP通讯
   server端有固定IP,box可以定时连server发送数据
client和server之间也是TCP通讯
   问题是如果client要对box进行设置即发送数据给box,是把数据传送给server,让server中转给box???还是client连接box???box没有固定IP????还请有经验的谈谈你们是怎么实现这样的通讯的???

解决方案 »

  1.   

    既然box没有固定ip,那肯定只能client把消息发给server,server缓存消息,待下一次box连接时把消息发给box
      

  2.   

    我现在是考虑的通过server中转,思路是不是定义winsock数组,哪个box上线连接成功后,记住他的数组序号,
    再把数据发送给指定的winsock??
      

  3.   

    如果 box 会主动发数据,那么需要winsock数组。
    如果 box 是被动式的,用一个winsock轮流与box通讯就可以了。
      

  4.   

    box是主动的,因为是硬件,是定时启动一次,我server软件肯定要winsock数组
    关键是如果有1000个box与我server连接,server怎样判断其中的一个中转client发过来的数据???
      

  5.   


    肯定有用来标识某个box的唯一编码的哇。
    client发给server的指令中带上这个唯一编码,用以告知server该指令要发给哪个box。
    box连接到server后,server询问box的编码,然后判断是否有暂存的指令要发送给该box。
      

  6.   

    一台计算机一次只能响应一个box的请求,既然是定时启动的,那么冲突很严重。
    通常应该有一个硬件设备做中转,它有N多个硬件端口可以进行同步处理,而计算机只需要访问这个设备,通过ID区分来间接控制多个设备。
      

  7.   

    在box第一次连接server     时servr就吧box的记录下来   client上线时server返回box的ip      client再和box    建立连接     或者     client先连接server    box获得返回数据连接client连接出错时重新发送ip获得命令
    这样就可以三方互联
      

  8.   

    楼上的我支持,不过还得考虑一个服务器承受压力的问题,上楼不是说了嘛,如果 "关键是如果有1000个box与我server连接",这个时候我假如服务器挂了或者是IP限制导致
    没有办法让链接box及时链接到server呢? 
    我的建议是
    client需要修改BOX的数据,直接提交数据,然后服务器审核就可以了,嘿嘿,简单明了