OICQ是怎样实现UDP数据报发送的?(在线,提供资料同样感谢,有分。)

土著巫师 2003-03-13 05:01:41
情况是这样的,假如有一个公司在北京有一个办事处,总部在上海,北京的A子网是192.168.1.0,通过一个公用IP(202.202.103.1)代理上INTERNET;上海的B子网是192.168.2.0,也通过一个公用IP(61.61.102.1)代理上INTERNET;现在问OICQ怎样实现A子网的一台机器(192.168.1.22)同上海B子网内的一台机器(192.168.2.33)相互通讯的?OICQ服务器在通讯中起了怎样的作用?NAT在这样的环境下到底起了怎样的关键作用?(可以暂时不考虑防火墙,假设双方都是通过类似WinRoute这样的NAT代理上网,没有做任何端口MAP)

热烈欢迎做即时通讯软件的高杆指点。
...全文
262 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
kataboy 2003-05-04
  • 打赏
  • 举报
回复
学习ing....
asimpleman 2003-05-04
  • 打赏
  • 举报
回复
欢迎大家继续讨论!
mustang_zr 2003-03-22
  • 打赏
  • 举报
回复
学习。。。
gudufeixiang 2003-03-21
  • 打赏
  • 举报
回复
m
thingking 2003-03-21
  • 打赏
  • 举报
回复
各位的探讨很有价值,我也碰到类似问题也可算楼主的子问题,但还没有找到解决方案,还望指点迷津。
问题:
在局域网中有一台机器A通过代理连上internet,我用NMUDP控件从A,向一个具有固定IP的机器(服务器)发送udp数据包,然后服务器会给我一个回应的UDP数据包,但是回应包只能被代理服务器收到,不能被A收到。请问有什么办法可以使A收到这个回应包。
BCB 2003-03-21
  • 打赏
  • 举报
回复
昨天试验证实:
代理端口维持时间的长短,与代理有关,一旦不通讯的时间超过一定
时间,代理口就可能不存在了,我的代理端口,每停较长时间,代理端口就
换,代理地址也可能换(我是路由器代理,有很多备用代理地址),而对
方既不变端口也不变地址;
使用端口的程序退出,本地诊听端口消失,但代理端口不一定立即消失,
程序再次运行,此代理端口又能使用,之间并没有联系。
以上细节知道不知道并不重要,只要知道代理地址与端口都有可能改变就
行了。
土著巫师 2003-03-21
  • 打赏
  • 举报
回复
To: thingkin(up)

1、WINDOWS ME/XP/2000自带的代理程序,要在客户端安装MS的和带理配套的客户端软件,具体工作方式可能和一般NAT代理或路由器自带的NAT功能不太一样;其内部运作是不是NAT还很难说,比如说出于安全性,可能你没主动访问过的IP来的数据就进不来。

2、你用WINROUTE、SEAGATE等其他NAT代理试试,应该可以解决你的问题。如果还不行,可能要从其他方面着手,比如你的网络设置什么的。

3、我们这里讨论的基本上有根据已实现了。
thingking 2003-03-21
  • 打赏
  • 举报
回复
我用的是win2k sever自带的代理程序。qq中没有设置sock5代理。
请问BCB兄,我遇到的情况很特殊吗?
BCB 2003-03-21
  • 打赏
  • 举报
回复
你的局域网用的是什么代理上Internet呀,
你的QQ是不是通过sock5代理才Internet的?
thingking 2003-03-21
  • 打赏
  • 举报
回复
TO: BCB(天下三分明月夜,二分无赖是扬州)

QQ一直可以上,现在也可以上。我现在用远程控制在代理器上编写程序,很担心这个问题不能解决
,将来用户在使用时会有很大的局限性。但我想这个问题肯定是有办法的,thinking...
不知BCB兄有何高招,一定请BCB兄帮我想想。
BCB 2003-03-21
  • 打赏
  • 举报
回复
若是网关代理,应该没问题,如果是sock5代理就不行,TNMUDP就不通。
你在A机上装一下QQ,能不能直接上Internet?能上,UDP就应该没问题.
土著巫师 2003-03-20
  • 打赏
  • 举报
回复
To: BCB(天下三分明月夜,二分无赖是扬州)

1、事实是:各种以NAT为基础的代理软件,对动态分配给子网内客户的UDP端口维持的Timeout值是不一样的,一般不得小于2-3分钟,这个值是一个底线。
2、经查,经典的WinRoute对UDP的Timeout缺省值是8分钟,并且有接口,在高级选项设置里是可以修改的。(TCP是40分钟),相信Seagate这样的软件也有类似的设置,请使用Seagate的朋友核实。
3、本人因为项目在手没时间进一步核查,报谦。
阿鹏兄 2003-03-20
  • 打赏
  • 举报
回复
非常感兴趣
Chxis 2003-03-20
  • 打赏
  • 举报
回复
see
土著巫师 2003-03-20
  • 打赏
  • 举报
回复
To yesry:

1、我们讨论的思路肯定没有问题,很可能是你具体实现时出了问题;在你的启示下,给你一个简单的方法如下:
2、首先双方都起动QQ,接收端准备好程序,UDP端口和QQ是一样的(先不起动),对方给你发消息后,在WIN2000里直接把自己的QQ进程杀死(反止自己的QQ向服务器发送离线消息),马上起动自己的接收程序,通知对方继续用QQ向你发消息(加密的),保证接到:)
3、我在这个方法下按着上述步骤验证通过,千真万确,在同一个子网内的两个QQ用户也可,道理是一样的。

祝你好运。
yesry 2003-03-20
  • 打赏
  • 举报
回复
我试验过了,用qq得到的NAT端口在qq推出的时候就不能再用了。
例如我的qq显示朋友的202.56.49.41:36565,然后让朋友下qq,开一个UDP侧听程序(有点上面的),LocalPort=4000(qq的端口),我用udp向202.56.49.41:36565或202.56.49.41:4000发送,朋友收不到。

所以,我怀疑用这种方法,甲客户端发送UDP包到服务器,由服务器获得的甲客户NAT端口(如88201),而乙客户端用这个端口(88201)给甲发送UDP包是否可行。

我缺乏这样的环境。不如我们共同研究吧,搂住有Internet IP的机器吗?
BCB 2003-03-20
  • 打赏
  • 举报
回复
用外网的牵手服务器程序就完美了,这是下一步的事,
UDP还要试验丢包的事,拟互传屏幕,最后变成小木马。

土著巫师 2003-03-20
  • 打赏
  • 举报
回复
To: yesry

你的质疑是有道理的,BCB(天下三分明月夜,二分无赖是扬州)的程序是可以完成UDP相互通讯,但就目前来瞧,程序本身并没有自动完全取得对方NAT的IP,和子网内客户代理端口的能力的。

To:BCB(天下三分明月夜,二分无赖是扬州),不通过公网上的服务器软件帮助(双方可知道其IP),你的程序不能很好的工作,况且我们讨论的也不只是这些,我不知道你是不是从其他手段事先取得了一方的NAT本身的IP,和对方子网内某一客户事先分配好的端口,如果你再补一个服务器软件,完成双方信息中转工作,那就完美了;同时我们讨论的反止超时的问题你的程序没有任何措施;建议完整实现,这是一个很好的UDP通讯的典范。谢。
BCB 2003-03-20
  • 打赏
  • 举报
回复
由于难找到外网的人,他也在内网,但
他说他的端口与代理端口经常相等,所以就试了一下,
我发给他的2048口,居然收到了,他马上就看我
的代理地址与端口,就能自动回了
yesry 2003-03-20
  • 打赏
  • 举报
回复
TO BCB(天下三分明月夜,二分无赖是扬州)
代理后的端口你怎么知道的?

23923与25446
对方也是内网,代理是XP, 由于他的端口2048与代理端口2048

加载更多回复(47)

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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