说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

我很郁闷的一个问题:我写的聊天软件 有时候对方收不到我客户端程序发的一切信息,却能收到我服务器程序发的一切信息

编辑:说三道四文库 发布时间:2018-05-23 05:32
HTML文档下载 WORD文档下载 PDF文档下载
我很郁闷的一个问题:我写的聊天软件 有时候对方收不到我客户端程序发的一切信息,却能收到我服务器程序发的一切信息

各位高手大家好,我第一次来到这里,因为我在网上实在找不到答案了,发现这里挺红火的,于是就进来请教大伙儿了!

我这几天刚写好了一个类似qq的聊天软件,用vc 2005写的,可以申请账号,我是用sql server 2005和ADO技术访问的数据库。
访问数据库的操作都交给我的服务器驻留程序去处理,
而客户端程序根据用户的操作,来向远方的服务器程序发送指令,服务器程序根据指令操作数据库,然后返回发送处理结果,客户端程序接收结果,基本上就是这个流程。

我第一次跟我表妹测试的,她在家里,而我也在家里,我们都选择空闲的端口来侦听数据,我们测试的很成功。
后来我跟我一个在网吧上网的同学来测试,他先用我的客户端程序注册了一个账号,而这个操作是只和我的服务器程序打交道的,这一点没有什么错误,他提交了他的个人信息,然后我的服务器程序返回给他一个空的账号,他顺利登陆,我的服务器程序也在数据库里成功记录了他的登陆信息。

然后我把我的账号也上线,让他加我为好友,我这个软件编的是必须经过对方的同意才能加为好友,于是他在“查找好友”里看到了我,选择要加我为好友,他那边的客户端给我这边的客户端发来了添加好友的请求,我也收到了,并同意了他的请求,按理说,我这边的客户端回发了一个“OK”给他了,就算接到的不是“OK”他那边也应该有提示的,可是他那边什么反应都没有,也就是说,他根本就没有接到我的回复,他又换了好几个空闲端口都是这样。

后来我在数据库里边强行添加了我和他互相成为好友,然后我们都登陆,我们的好友列表里都有了对方,然而,他发送的聊天信息我能收到,而我发的聊天信息他都收不到。于是我很郁闷,我觉得我写的软件应该没问题吧,因为跟我表妹测试的时候,也是同样的操作,我们俩之间通信没有问题,我俩还用我的软件聊了一下午呢。而跟我同学测试的时候,他只能接收到我的服务器的发送信息,不能接收客户端发送的信息。我不知道这是怎么回事,是不是他在网吧的缘故呢?我的数据库里还保存有他当时登陆的的ip地址:222.88.62.70。
侦听端口号是:8999 (在程序启动前已经确认没有任何程序占用)

当时我的IP地址是:222.89.124.68
我的服务器侦听端口是:6001 (当时这个端口没有任何程序占用)

我的客户端地址和服务器地址是一样的,因为我在我家的电脑上同时运行服务器端和客户端
客户端侦听端口是:8999

我不知道我说了这么多,是否把我的问题说清楚了,我想肯定有很多没说清楚。所以想请大家给出所有可能的问题所在,我在此先谢谢各位高手了,如果有谁想和我做测试以便详细确定问题,请加我QQ:85120019。

再次感谢,急等答案。。。。。
忘了说一下了,我用的是visual c++ 2005 的MFC模板基于对话框
谢谢大家! 
说了这么多,没看到关键的。
比如用的TCP还是UDP?看你意思client直接通信?
引用 2 楼 rageliu 的回复:
说了这么多,没看到关键的。 
比如用的TCP还是UDP?看你意思client直接通信?


不好意思,我忘了说了,我用的是UDP。
昨天写的太慌了,肯定有些重要的东西没有交待好。
这个论坛是不是不能编辑自己的帖子?
我只能回复自己的帖子来补充说明了。。。
帖子好长,看死我了!!
  你跟你表妹能够测试成功,是因为你们都有一个独立的IP地址,而网吧一般只有一个独立的IP地址作为出口,网吧内的机器都是192.168.X.X的,是一个内网的地址,内网的IP可以直接给独立IP地址发送信息,独立IP可以接受,但是独立的IP地址就未必可以给内网发送信息了,因为你发送的是给该内网外层的NAT地址的,无法穿透到内网。
NAT穿透问题
5楼的朋友,我看了你的答案已经明白了,我想请教一下,有没有解决问题的方法呢?
谢谢你的指教,很感谢!
他只能接收到我的服务器的发送信息,不能接收客户端发送的信息
//如果这样,可能不是NAT穿越的问题。
另外,client是通过server转发,还是直接通信?
如果是用户之间聊天,则通过IP地址和端口号互相直接通信,如果是与数据库有关的操作,则跟服务器程序通信,比如说:注册、登陆、查找好友、添加好友、注销。
我好久没有来了,系统说这个帖子该结了,但是我还没有得到解决办法,实在不想结。。。。。。。
NAT穿透问题,光使用UDP是不行的,最好用Http,其次要考虑不同的代理问题,
如遇到内网中的内网,程序就更不能这么简单了。网上的穿透程序都是跟你一
样的。我有一个真正的UDP穿透程序:http://maguangzhi.bokee.com
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘