请各位帮帮忙!
  现在在做一个GPRS通讯程序,很多GPRS设备连接到一个服务器上,服务器端保存着GPRS设备的相关信息,当有设备连接到服务器上时,怎么区别它是信息中的哪一个设备呢?

解决方案 »

  1.   

    你用什么控件做的,我刚用delphi的serversocket控件做过一个GPRS通信程序,你说的这个问题也捆扰了我很久。当有设备连接到服务器上时就有一个socket,那个socket的sockethandle是唯一的,指定这个sockethandle对应你的GPRS设备出厂编号来区分。
      

  2.   

    这些设备应该有sdk供调用,记住handle列表和设备编号列表的对应关系。
    用的什么gprs模块:是爱立信的G47?
      

  3.   


    我用的也是serversocket,怎么让sockethandle对应上GPRS设备的出厂编号?那当这个设备断开后,再连接的话,还会是sockethandle吗?
      

  4.   

    GPRS模块是可以设置参数的,有配套的参数配置工具。为每一个GPRS设置一个id。按照一定的通信协议,传递给服务器,服务器可以根据这个id号来判断是哪一个GPRS。
      

  5.   

    根据socket和id建立唯一对应,如果服务器是iocp,关联,通过指针自动找到
      

  6.   

    设备断开后,再连接的话,还会是sockethandle,只不过sockethandle会变。在它正常连接的情况下是不会改变的,一个sockethandle对应你设备的一个id号。。
      

  7.   

    to lijianchuang0702:
      能详细说一下参数配置工具吗?to ruanjian2110:  na如果sockethandle发生改变,还如何对应id号啊?
      

  8.   

    已经跟你说的很明白了啊,你就需要写几个函数维护一下啊。一个设备连接它的socket的sockethandle就对应你的设备编号,即使断开再连接还是socket的sockethandle对应你的设备编号,这样就不会有问题了。因为设备的socket的sockethandle是唯一的,你就指定它的sockethandle对应你的gprs设备号,这样还可判断设备在线和不在线的情况。但是我还有个问题没解决,就是把gprs手动断电后不会触发serversocket的OnClientDisconnect和OnClientError事件。
      

  9.   

    to ruanjian2110:
      你的意思是不是在GPRS设备连接上以后,就发送一个设备编号,在将这个编号和sockethandle连接起来,是吗?
     
     你用的是什么模块?
     我前几天实验GPRS模块连接然后手动断开,可以触发OnClientDisconnect事件的,当时只是做了一个简单的测试软件.
      

  10.   

    恩,我说的就是那个意思。我们公司用的是sim300模块,你们公司用的是什么模块?
      

  11.   

    to ruanjian2110:
     我明白了  谢谢你!^_^我们用的Telit的GE864