思考题(TCPServer-TcpClient不同子网通讯): 请大家帮忙解答!,谢谢(0分)

  • 主题发起人 主题发起人 lencon
  • 开始时间 开始时间
L

lencon

Unregistered / Unconfirmed
GUEST, unregistred user!
大家好!
我以前是用INDY UDP的,曾做成功一个外网的远程监控程序,现在准备改用INDY TCP来做,现在遇到问题了,需要请求各位高手;
我以前UDP做法

1/受控UDPSERVER 开机启动,在TIMER中定时主动向--固定IP服务器 发信息,让固定IP服务器得知 受控的IP及端口
2/然后,主控上线也用UDPSERVER向-----固定IP服务器 发信息,让固定IP服务器得知 主控的IP,并且主控向服务器索取受控的IP
3/连接,通过两种方式
直连 主控------受控
反向 主控------固定IP服务(请服务器让受控连)-------受控--------主控
以前上面这些都做成功了,由于UDP老丢包,即使加一些安全验证代码,也不方便,外网每次传输在多数情况下只能是1K/每次,30K大小的数据要传30次,虽然每次传输都很快,但30次当中有一次丢包,数据就没用了.所以我现在想改用TCP来做

TCP我现在只能做到
A子网被控TCPCLIENT----->固定服务器
B子网主控TCPCLIENT----->固定服务器
双方的IP和自动映射端口都知道了,但全是TCPCLIETN控件的端口

我现在如何用 主控的TCPCLIENT 去连上被控中的TCPSERVER?
请高手帮忙?
 
我昨天突然有一怪想法,请高手指点

就是用 子网被控机A的UDPSERVER:PROT8001------->固定IP UDPCLIENT 以得到随机映射的10000端口,然后用主控TCPCLIENT---------->受控IP:10000,而TCPSERVER的端口也是8001,TCPCLIENT发来的连接请求肯定是让8001的TCPSERVER来呼应,而不是8001的UDPSERVER.

而我经过了测试
UDP8001,TCP8001可以同时存在.
而按照上面UDP打前阵的做法,TCPCLIENT连10000,根本没连上,
这证明8001端口,虽然端口数字相同,但他们是不同的数据通道,10000端口仅代表的是UDP8001,而不是TCP8001,端口的映射也许分协议方式的,也许是8001表面上数字一样,实际代表的不同数字,
这我也搞不清了,

我的想法是,有什么办法, 能使UDP先代表TCPSERVER,开一条路,然后让TCP去走
如不能,其他有没有 TCP的SERVER端 能发起式发信息的控件?
 
top
请大家回答,要分不成问题
 
难道这么大的一个论坛,竟然没人知道吗
 
你这样根本就是谬论,TCP是三次握手协议,怎么能用UDP来偷梁换柱.
 
楼上还是没明白我的意思
并不是要让TCP---连UDP
让UDP----UDP代替TCP的端口开路
让TCP----TCP
 
要像 UDP 那样过路由是不可能.

只有能 Ping 通的,才能用 TCP

或者 只有用代理方式了.

把那个固定IP的服务器做一个转发.
 
网上搜索一下udp探测的相关资料 ,
这个是im软件滥用的技术了,前提是server必须在公网
 
>>但30次当中有一次丢包,数据就没用了
你自己已经写好的东西,再改一下,如果丢包,则再发,则到另一方确认
我想写这个,比你重写要好些吧。
 
用安全UDP解决丢包问题
 
后退
顶部