大约有1000左右个客户端,每个客户端30秒送一个数据包,客户端第一次连接时的数据是一个客户端标识号,连接成功后每30秒送一次数据,但数据中不含客户端标识,我怎么才能在接受数据时,找到他第一次登录对应的客户端编号呢?(客户端是GPS终端设备)。另每5分钟会有一个心跳,判断连接是否正常。原有发送方式 每30秒发送一个数据包,但数据包中含有客户端标识(原有程序是多线程)。现在要求修改原有程序,加入这个功能(原来的功能不能去掉,因为每30秒发送的一个数据包当中还有包含客户端标问供的数据,上面提到的是后加的数据传输协议)求解决办法
说的有点乱,如有需要,我可以把源码附上来 代码很少。
注:本人在这方面是菜菜菜菜菜。

解决方案 »

  1.   

    每个Socket不是都建立一个接受线程吗?在建立接受线程的时候,把客户端的标识也传过去,接受的时候,不就可以知道是哪个客户端传来的。
      

  2.   

    你搞个数组把客户端一一对应起来不行么?用异步的socket
      

  3.   

    用ArrayList把socket保存下来,最好定义一个类,类有socket和标识,然后ArrayList.add类保存;或者干脆就hashtable,标识做key,内容保存socket。应该用异步。
      

  4.   

    “用户端第一次连接时的数据是一个客户端标识号”-----
    对应一个新的socket连接,客户端标识号和这个socket是一一对应的。可以用hashtable保存,
    键是客户端标识号,值是socket。
      

  5.   

    服务端Accept到的Socket和客户端是一一对应的,你可以通过这个Socket来判断是哪一个客户端发送过来的数据!
      

  6.   

    class user
    {
     socket s;
     string username;
     ...
    }hashtable保存发来的标示号
      

  7.   

    真不好意思,这么久才来结贴,程序是我们经理找了个熟悉Socket的人帮写的,谢谢大家的回答