客户那边要的比较急,自己慢慢折腾怕时间来不及,所以来CSDN求助。情况大致是这样:内网有两台服务器,A服务器为开放公网接口的中转服务器,B服务器为与A服务器同一个内网的系统服务器。
客户端为百来台PDA,通过GPRS网络连接A服务器进行数据交互。
现需要在A服务器上做个中转程序,要求如下:
1、将PDA发送过来的数据请求原封不动转发给B服务器
2、将B服务器返回的信息原封不动转发给第一步中发出请求的PDA
3、保证数据收发的稳定性在下知道发这个帖子估计要挨很多老鸟的骂了,不劳而获什么的最讨厌了,
但实在因为太急而对这块又不是很熟,所以哪位高人有没有该功能的工具推荐下,或者给些类似的源码,我自己去整合,不胜感激。

解决方案 »

  1.   

    介个,不难,自己写出来也不要多久,不过,感觉A服务器很浪费,被当做路由器或者交换机用了,呵呵。
    业务逻辑看起来也挺简单的:
    client --> A       //客户端连接A服务器,发送数据
                A --> B //A服务器原封不动转发数据
                A <-- B //B服务器把结果原封不动返回给A服务器
    client <-- A       //A把结果返回给客户端
    如果用最简单的逻辑的话,也就是两个socket对加两个线程,一个线程处理client <--> A,另一个线程处理
    A <--> B,两线程按照业务逻辑同步
      

  2.   

    如果是转发数据,肯定可以知道A要将信息发送给B,但是B返回信息时是如何知道这个信息要返回给A呢?
    楼主能不能说明呢?
    感觉2楼的想法不太好,楼主说过要对付百来个PDA,这百来个PDA不知道会配成多少对
    程序内部应该维护客户端信息,还要知道某个信息是谁发送给谁的
    我的想法很简单,一个接收数据的线程,一个发送数据的线程(当然,接收和发送线程也不一定就一个)
    数据结构:客户端信息链表,接收数据链表,发送数据链表
    至于线程同步,就不用说了
      

  3.   


    A有发信息给B,B每次都必须立即返回信息给A
      

  4.   

    立即返给A?如果B在返给A的时候中间出现问题,返回失败?这时候A在发送的话,B在返回,如何鉴别呢?
    百来台PDA,数据量应该不算太大。容错性未知
      

  5.   

    转发的时候client1 发送过来一定要带有自己的标识,比如pda1,然后a保存client1,pda1,socket形成一个map关系,然后b接受到pda1的信息后,要保存这些标识,并返回给a,a通过map找到对应的socket,然后返回给client1