RT,现在手上有个项目,其中涉及到两个部件,暂定为A和B,他们通过交换机相连,B部分是另外一个公司提供的,带3G模块可以链接到网络,产品内的程序也是一并提供好的,现在A是我们自己开发,其中A有些数据需要传送到B上发到网络中去,所以B相关库函数中带有一个函数实现发送功能,在A中加载库然后调用即可,但是前提是A要先登录B,现在问题来了,因为A和B的链接需要一直保持,但是在长时间使用以及供电等其他因素下,可能会使A和B突然中断的发生,这样A就需要再次登录B,如果B端设置一个端口监听,A用TCP方式连上,就可以解决这个问题,但是B部分完全是另外一家公司做的,我们没有源码修改,请问有没有什么好的办法来解决这个问题,

解决方案 »

  1.   

    就是我的A设备,通过交换机和B连接,然后A调用B的开发包的一个函数登陆B,并保持,但是中间可能因为外在因素,例如交换机短暂断电,使A和B的链接断开,所以我就需要找到一个方法连检测A,B链接状态,因为B的源代码无法获得,所以无法从B入手,只能在A这一块想办法解决!~
      

  2.   

    A与B连接,如果有错误,返回码不一样吧设置定时器,A定时跟B连,如果返回码是“已连接”就不管,如果是不存在连接就退出,那样是不是可以不用断了之后自己重连??再者,链接断开会有消息,可以再断开的消息里设置定时器,再与B连接,知道连接成功,干掉定时器~
      

  3.   

    to m_tornado(Tod[兔子党生产部经理]) 我刚看了下,A跟B通信,用的函数可能都是TCP类型的,但是所有调用的函数都是B那边封装过的,所以断开的时候socket是否有消息,在A这边无法判断,另外一个就是返回值的问题,因为第一次连如果通了,就会有个int型的返回值,但是过一段时间,不继续调用这个函数就无法获得返回值啊,但是如果没断开,调用这个函数会报错的,所以根据返回码判断貌似无法实现吧!~
      

  4.   

    能知道链结是否断开吧。
    B程序总有个方法来建立链结吧。
    在B端写一个c程序。
    知道断开后通知c程序,c程序再来控制b.
      

  5.   

    B部分的程序写入芯片里,我们没办法进去修改,对外他提供了一个端口以及一个登陆函数,我在A这边只能调用他给的函数登陆,基本上很多信息都被封装到了他给的函数里,我无法查看得到,所以也没什么返回值可查
    另外补充一下,B可以当做成一个服务器,买回来里面就写好程序了的,所以没办法在他那边进行任何修改,更别提加一个程序了。
    请大家帮忙想想有什么办法但从A这边可以做到的方法。
    我之前有一个想法就是用PING方法,但是感觉这个方法不是最好的,因为存在漏洞,例如1时刻B断电2时刻又上电了,这是ping过去还是可以通,但是A已经和B断开了,所以觉得这个不是个好方法,请大家帮忙想想更好的点子