UDP效率问题,在线等

u2m 2005-01-25 12:31:06
简单的使用UDP测试网络丢包及收发效率,发现一个奇怪的现象,如果网络测试仪加Linux下测试程序测试则丢包很少,提高网络速度丢包的现象也不是很明显。
但使用网络测试仪加Windows下的测试程序发现在网速不是很快的情况下丢包不多,效率还可以。但提高网速后,发现丢包现象较之Linux多了非常多。不解。各位有熟悉情况的吗?给出帮助立即揭帖。

附简单的测试代码
struct sockaddr_in local;
struct sockaddr_in from;
int recvlength;
int fromlen =sizeof(from);
local.sin_family=AF_INET;
local.sin_port=htons(5000); ///¼àÌý¶Ë¿Ú
local.sin_addr.s_addr=INADDR_ANY; ///±¾»ú

socket1=socket(AF_INET,SOCK_DGRAM,0);

bind(socket1,(struct sockaddr*)&local,sizeof(local));

while (1)
{
char buffer[2000]="\0";
if ((recvlength=recvfrom(socket1,buffer,2000,0,(struct sockaddr*)&from,&fromlen))!=-1)
{
sendto(socket1,buffer,recvlength,0,(struct sockaddr*)&from,fromlen);

}
else
;//printf("Data lost");
}

closesocket(socket1);
...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
u2m 2005-01-26
  • 打赏
  • 举报
回复
有高手再指点一二吗?
u2m 2005-01-25
  • 打赏
  • 举报
回复
没人清楚吗/
bug2k 2005-01-25
  • 打赏
  • 举报
回复
搂主为什么没有给测试包给一个序列代码检验呢?
如果看看是否有包顺序颠倒的情况, 因为数据包错误也有次序错误这项啊。
oyljerry 2005-01-25
  • 打赏
  • 举报
回复
最开始的socket通信开发,TCP/IP协议等都是在unix/linux上的,可能比windows更有优势些
gdy119 2005-01-25
  • 打赏
  • 举报
回复
具体 有什么区别 我没研究过,等等高手吧 ^_^
u2m 2005-01-25
  • 打赏
  • 举报
回复
kingzai(stevenzhu):
只是做性能测试,就是为了看速度快时会丢失多少包,做校验还有什么作用?

gdy119(夜风微凉):
这样说来Linux的协议栈效率比Windows要高很多了?

sharkhuang 2005-01-25
  • 打赏
  • 举报
回复
mark为什么会有差异呢?协议栈的问题?
gdy119 2005-01-25
  • 打赏
  • 举报
回复
Linux/Windows TCP/IP 协议栈有区别
kingzai 2005-01-25
  • 打赏
  • 举报
回复
用UDP必须有校验,因为UDP是不可靠协议,如果发送速度快,就会丢包,必须进行流量控制,建议有接收方驱动,或发送方一直发送,有接收方进行校验,有错误才通知接收方重发.
不然你就用TCP吧
Martin_personal 2005-01-25
  • 打赏
  • 举报
回复
关注中……

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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