最近想做一个TCP和UDP发送消息延时的测试【测试主机】1)本地主机1台:教育网内,windows系统,作为客户端2)远程主机1台:linux系统,装有两块网卡,一块连接教育网,一块连接公网由于远程主机所在网络防火墙的限制,只能使用其80端口,于是停掉它的httpd服务,借用
其80端口来进行下面的实验【测试方法】基本的Socket通信程序,分别采用TCP和UDP,客户端发送一个消息至服务端,服务
端收到后再发回来,客户端记录间隔时间,除以2得到延时【遇到的问题】用TCP方式没有问题,可以得到测试数据(连接远程主机的教育网、公网IP都可以)
但是采用UDP方式,不管是服务端的教育网还是公网IP,客户端发送消息后,服务端
均收不到。但改在同一局域网内测试,服务端可以收到消息,可以正常获得测试数
据。【疑问】如果局域网内没有问题,应该不是测试程序的问题吧。会是什么原因造成的呢,UD
P的丢包嘛?可是试验多次,每一次都丢也不可能吧。请教大家,这种情况可能是什么原因造成的?我是初学,请大家多多指教!万分感谢!!!

解决方案 »

  1.   

    问题可能出在 远程主机(linux系统,装有两块网卡,一块连接教育网,一块连接公网)bind 的时候 试用 ip 0.0.0.0  port 80
      

  2.   

    确实是这样bind的
    IP:INADDR_ANY
    port:80
      

  3.   

    在接收的时候,你判断一下是不是发生了错误??
    还有可以通过使用WSAAsyncSelect异步选择模型来测一下是否已经有数据到达??再不行,就用sniffer抓包看看数据是否已经到达还有要注意看客户端发送数据的时候是否发生了错误
      

  4.   

    谢谢nuaawenlin(飘人)的指教!我又看了一下,发送和接收的时候都没有发生错误(我的程序是有错误代码输出的)我再用您说的方法测一下是否数据已经到达