导航

<2007年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

随笔分类

随笔档案

文章档案

相册

        一个C/S程序,我自己写的SERVER,我自己写的CLIENT,他们之间使用TCP通讯。某用户使用CLIENT的时候,服务器经常莫名其妙地崩溃,我自己和同事测试,又总找不到问题。今天终于被我逮到了BUG,在我自己的通讯数据中,居然被BT插入了他的数据:“......我的数据......\rBitTorrent Protocol.......我的数据......”导致我服务程序的崩溃。我的天呀!!!!!TNND,BT真变态!!!和某用户联系询问他是否安装了BT下载软件,回答是“yes”。建议他删除BT后,一切正常了。

        代码改进后,程序终于健壮了。

        友情提示:不要想当然地认为TCP数据就能100%地正确地传递到了对方。

                                                            2007-04-21
posted on 2007-04-21 22:47 杨老师的茅屋 阅读(2734) 评论(12)  编辑 收藏
评论
  • # re: BT 干的好事!
    快乐小胖鸟
    Posted @ 2007-04-22 09:57
    安全方法还是数据收完再进行一次校验喽~~~~~~~~~
  • # re: BT 干的好事!
    周星星
    Posted @ 2007-04-22 12:24
    我怀疑怎么会有这样变态的BT程序,那岂不是所有基于TCP的通讯都不行了吗?
  • # re: BT 干的好事!
    zuilang
    Posted @ 2007-04-22 15:04
    强烈建议杨老师说明是不是所有的BT软件都会这样?如果不是,就把那个影响的公开,我们来帮你骂死它^_^
  • # re: BT 干的好事!
    hatemath
    Posted @ 2007-04-22 20:29
    杨老师又出新帖啦
    建议测试一下emule是否也有这样的情况,最后出一篇大作:)
  • # re: BT 干的好事!
    hatemath
    Posted @ 2007-04-23 09:48
    昨天刚看杨老师的随笔,不想今天也遇到类似的情况了。我们这拨号上网用的是一个叫drcom的垃圾软件,我的板子通过网络给别的pc发的udp数据也会被drcom干扰。比如对方原来应该收到:good evening ,结果收到的是:Drco拭琅3拭?梘ood evening
  • # re: BT 干的好事!
    李嘉
    Posted @ 2007-04-23 14:24
    Dr.Com 是会更改收发内容的 因为他要加密数据 限制共享上网
    不过BT会这么干 就有的说不过去了
  • # 请教问题
    winston
    Posted @ 2007-04-23 22:17
    杨老师:
       您好,从拜读您的一系列的关于com入门知识到现在,让我学到了很多的知识.现在遇到了一个问题,特向您这为com领域的执牛耳者请教,问题是这样的:
       我对idl进行编译后产生两个不同语种(中、英文)的tlb文件,我想在程序运行过程中,用户选择切换语种后,程序能够动态地切换tlb文件。
        如果不能在程序运行过程中进行动态切换,也可以当用户选择切换后重新启动程序时进行加载不同的tlb文件。
        特向您请教。谢谢
        我的email是:winstonwzl@hotmail.com
  • # re: BT 干的好事!
    清风雨
    Posted @ 2007-04-24 10:49
    是呀,我还是很怀疑是不是杨老师哪里自己不小心,或者和具体的实现技术有关(比如会不会刚好和 地址重用 撞上了)。总觉得BT不至于这么做,应该不会撰改TCP连接数据。

    就像周**说的,如果这样,那么理论上HTTP,他也不可能正常使用的,比如看sina网页,应该也会多出些内容。
  • # to winston
    杨老师
    Posted @ 2007-04-25 00:10
    winston:你好!
      你不应该使用2个版本的IDL,IDL 只由一个,而把不同文字语言当作资源放在单独的DLL文件中,你的COM根据参数动态调用或加载不同语言版本的DLL资源而已。
  • # to 清风雨
    杨老师
    Posted @ 2007-04-25 08:22
    清风雨:你好!
      作为BT,它是知道什么端口该操作什么端口不该操作的。HTTP的80端口对BT来讲,它显然知道对方不可能是自己操作的对象。另外,对于健壮的服务程序,只要做好了校验也是能过滤屏蔽掉这些垃圾的。
      我写出这个随笔,完全是友情提示,将来你编程的过程中如果遇到了一些问题,不防考虑考虑我的提示:)
  • # re: BT 干的好事!
    金庆
    Posted @ 2007-05-15 16:39
    删除BT后一切正常了?仅仅是表面正常吧?
  • # re: BT 干的好事!
    jsuabc
    Posted @ 2007-07-03 16:55
    杨老师您好!
        TCP本身肯定是可赞的,至少表现在传输上是可靠的,我奇怪BT怎么会添加一段数据在后面呢,是不是你的SOCKET被勾住了,还是有SPI钩住了send? 
        原来杨老师写的服务器也崩啊,看来没怎么检验哦,键状性有待提高哦~
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]

统计