我的服务器程序放在一台托管在IDC机房的服务器上,有10M带宽.可是有个问题,服务端在向客户端发送数据时出现流量不稳定的情况,造成客户的视频不流畅,很卡.我用工具监控了一下,发现服务端发送数据时每隔三秒每秒的数据发送量只有十几K至三十K,这样低流量连续9秒后又可以有三秒的高流量(每秒200K),单个连接最多只需120K.数据流量图如下略图:|||         |||         |||         |||         |||
|||         |||         |||         |||         |||
|||||||||||||||||||||||||||||||||||||||||||||||||||.....................(以秒计)
最高为200K左右,最低是在12-50K.我用的是UDP协议.如果我将客户端与服务器先连接成VPN的话问题就没有了,从头到尾都有差不多200K.而且在局域网内用也没问题.
我怀疑是服务器端有什么问题,可是又找不出理由,用http和ftp下载时流量都没问题,我用QQ发送文件时流量也正常(用UDP发送的).而且我也问过IDC,他们说他们对机房的网络没做任何限制.
可是说程序的问题吧,我也找不出问题出在哪了.局域网没问题,上公网用VPN连接也没问题.
郁闷,折腾了半个月了.

解决方案 »

  1.   

    是不是ICMP的问题?IGMP所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣,这样当这个组播组的数据到达后面,路由器就不会抛弃它,而是把他转送给所有感兴趣的客户。假如不同子网内的A,B要进行组播通信,那么,位与A,B之间的所有路由器必须都要支持IGMP协议,否则A,B之间不能进行通信。
      

  2.   

    laolaoliu2002(老刘):
    我对网络不太懂.看了您的回复,我想起了件事情.之前我在测公网连接时,客户端这边怎么都连不上.客户端是通过路由器共享上网的,可是我在路由器上做好了端口映射,而且我单独做了UDP服务端和客户端测试证明端口映射后网络连接和数据发送都没问题,可是我的客户端就是连接不上!用VPN可以.实在没辙了我就换了个路由器,结果一测问题解决了.可是接下来上面这个问题又来了,流量不稳定.
    现在的问题不是不能通信,是可以连接上而且也可以收到数据,客户端发出的操作信息服务器端也可以及时响应,可就是服务器端发送的数据流不稳定,使客户端经常在等待数据.
      

  3.   

    另外,我的程序没有用组播协议,是点对点的UDP
      

  4.   

    我建议你用一个截获网络包的软件,截获一些正常的包和小包进行比较,这样就可以看出发送的是视频包还是其他内容的包了.
    另外你可以参考一下MYICQ的代码看看它是如何在INTERNET上实现UDP传输的.
      

  5.   

    老刘:
    我按您的建议测了一下,发现正常和不正常时的包大小都一样,区别只是每秒发送包的多少.另外我说的问题是出现在传输音视频的时候出现流量不稳的情况,所以不会有别的数据包.下面我把截获的取一段打出来,请帮我看一下.是用2000as的网络监视器监测的.
    ----------------------------------------------------------------------------------------
    第一种连接式
    服务器-------------| 互联网 | ---------ADSL MODEM-----路由器-----客户端
    说明:在客户端的路器上已做好了相关的端口映射帧   时间    协议      描述                                            源地址   目标地址
    40  11.031  UDP      src port:8300 Dst port:1580 Length=12              Client   Server
    41  11.031  UDP      src port:1580 Dst port:8300 Length=15368           Server   Client
    42  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=1480      Server   Client
    43  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=2960      Server   Client
    44  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=4440      Server   Client
    45  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=5920      Server   Client
    46  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=7400      Server   Client
    47  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=8880      Server   Client
    48  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=10360     Server   Client
    49  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=11840     Server   Client
    50  11.031  IP       ID=0x2897 Proto=UDP Len:1500 Frag offset=13320     Server   Client
    51  11.031  IP       ID=0x2897 Proto=UDP Len:588  Frag offset=14800     Server   Client上面的第一和第二帧有一次测试出来竟然成下面这种:
      11.031  RADIUS   Message Type: Unknown                              Client   Server
      11.031  RADIUS   Message Type: Unknown                              Server   Client
    但是看帧的内容还是可以看清包头的结构.
    ----------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------
    第二种连接方式(数据发送正常,没问题)
    在第一种连接试的基础上将客户端与服务器连接成了VPN帧   时间      协议      描述                                            源地址   目标地址
    235  175.203   UDP   src port:8300 Dst port:1580 Length=12              Client   Server
    236  175.203   UDP   src port:1580 Dst port:8300 Length=15368           Server   Client
    237  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=1376      Server   Client
    238  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=2752      Server   Client
    239  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=4128      Server   Client
    240  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=5504      Server   Client
    241  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=6880      Server   Client
    242  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=8256      Server   Client
    243  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=9632      Server   Client
    244  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=11008     Server   Client
    245  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=12384     Server   Client
    246  175.203   IP    ID=0xF8D9 Proto=UDP Len:1396 Frag offset=13760     Server   Client
    247  175.203   IP    ID=0xF8D9 Proto=UDP Len:252  Frag offset=15136     Server   Client
    ---------------------------------------------------------------------------------------采用第一连接方式时,快的时候可以发送10-12个包,每个包是15K,150-180K/s刚刚好,还可以有点多.可是慢的时候就只有一二个包了,这样慢的时间持续9秒,而快则只有三四秒.
    采用第二种连方式时(VPN),每秒都可以发10包,而且不会断断续续.
    局域网连接时监控到的与第一种方式一样,只是每秒所发送的包不一样,它和VPN方式一样,很稳定.请问一下,出现这种问题会的原因会是什么呢?我怀疑可能是第一个由客户端向服务器端发送的包没收到,所以服务器端不发送数据.但是令人困惑的是为什么这种情况又是有规律的呢?如果说因为网络不稳定造成丢包致使服务器收不到包,但也不至于每次连续9秒都丢包,过了三四秒后又有9秒丢包?!而且当连接成VPN后这种情况又不会存在了.实在是想不明白.