socket转发程序求助

NINO 2011-11-14 07:09:38
客户那边要的比较急,自己慢慢折腾怕时间来不及,所以来CSDN求助。

情况大致是这样:内网有两台服务器,A服务器为开放公网接口的中转服务器,B服务器为与A服务器同一个内网的系统服务器。
客户端为百来台PDA,通过GPRS网络连接A服务器进行数据交互。
现需要在A服务器上做个中转程序,要求如下:
1、将PDA发送过来的数据请求原封不动转发给B服务器
2、将B服务器返回的信息原封不动转发给第一步中发出请求的PDA
3、保证数据收发的稳定性

在下知道发这个帖子估计要挨很多老鸟的骂了,不劳而获什么的最讨厌了,
但实在因为太急而对这块又不是很熟,所以哪位高人有没有该功能的工具推荐下,或者给些类似的源码,我自己去整合,不胜感激。
...全文
175 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijianli9 2011-11-15
  • 打赏
  • 举报
回复
转发的时候client1 发送过来一定要带有自己的标识,比如pda1,然后a保存client1,pda1,socket形成一个map关系,然后b接受到pda1的信息后,要保存这些标识,并返回给a,a通过map找到对应的socket,然后返回给client1
gameslq 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 suekid 的回复:]
客户那边要的比较急,自己慢慢折腾怕时间来不及,所以来CSDN求助。

情况大致是这样:内网有两台服务器,A服务器为开放公网接口的中转服务器,B服务器为与A服务器同一个内网的系统服务器。
客户端为百来台PDA,通过GPRS网络连接A服务器进行数据交互。
现需要在A服务器上做个中转程序,要求如下:
1、将PDA发送过来的数据请求原封不动转发给B服务器
2、将B服务器返回的信息原封不动转发给……
[/Quote]
问题其实就是客户想通过外网安全的访问B服务器
简单、安全、可靠的方案是在外网出口路由器设置端口映射,映射80,8080端口到服务器B就可以
相比较写程序开发周期短、安全有效,剩下的工作就是说服客户接受无程序方案了。
Yofoo 2011-11-15
  • 打赏
  • 举报
回复
我自己写过一个程序, 同时只能支持一个连接, 是否可以?
看起来简单, 实现起来比较麻烦的
贾囧雷 2011-11-15
  • 打赏
  • 举报
回复
立即返给A?如果B在返给A的时候中间出现问题,返回失败?这时候A在发送的话,B在返回,如何鉴别呢?
百来台PDA,数据量应该不算太大。容错性未知
NINO 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yby4769250 的回复:]

介个,不难,自己写出来也不要多久,不过,感觉A服务器很浪费,被当做路由器或者交换机用了,呵呵。
业务逻辑看起来也挺简单的:
client --> A //客户端连接A服务器,发送数据
A --> B //A服务器原封不动转发数据
A <-- B //B服务器把结果原封不动返回给A服务器
client <-- A /……
[/Quote]

差不多就是这个意思,我主要想知道有没有现成的工具,实在不行,就只能自己写一个了。。
NINO 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hnwyllmm 的回复:]

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

A有发信息给B,B每次都必须立即返回信息给A
羽飞 2011-11-14
  • 打赏
  • 举报
回复
如果是转发数据,肯定可以知道A要将信息发送给B,但是B返回信息时是如何知道这个信息要返回给A呢?
楼主能不能说明呢?
感觉2楼的想法不太好,楼主说过要对付百来个PDA,这百来个PDA不知道会配成多少对
程序内部应该维护客户端信息,还要知道某个信息是谁发送给谁的
我的想法很简单,一个接收数据的线程,一个发送数据的线程(当然,接收和发送线程也不一定就一个)
数据结构:客户端信息链表,接收数据链表,发送数据链表
至于线程同步,就不用说了
yby4769250 2011-11-14
  • 打赏
  • 举报
回复
介个,不难,自己写出来也不要多久,不过,感觉A服务器很浪费,被当做路由器或者交换机用了,呵呵。
业务逻辑看起来也挺简单的:
client --> A //客户端连接A服务器,发送数据
A --> B //A服务器原封不动转发数据
A <-- B //B服务器把结果原封不动返回给A服务器
client <-- A //A把结果返回给客户端
如果用最简单的逻辑的话,也就是两个socket对加两个线程,一个线程处理client <--> A,另一个线程处理
A <--> B,两线程按照业务逻辑同步
NINO 2011-11-14
  • 打赏
  • 举报
回复
求助呀求助。。。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧