什么影响了sendto()的性能

internet91 2012-12-22 11:30:10
for (int i=0; i<fileBlockNumber; i++) {

sendto( System::udpSocket, msgData, msgLength, 0, (sockaddr*)&remoteaddr, sizeof(remoteaddr) );

}

我发送144M文件,循环发送,每次1K。如果向本机发送,使用sendto()语句,花了7秒,而注释调sendto语句,则只用了3秒。

如果我向局域网内的一台机器发送,使用sendto()语句,花了50秒左右,也就是每秒2M(这里是发送,而不是接收,所以估计有问题),而注释调sendto语句,则只用了3秒左右。

也就是只要注释调sendto()性能就大幅度提示,那么估计问题就出现在sendto()上了。

请问怎么提高sendto()性能。

...全文
750 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
UDX协议 2012-12-26
  • 打赏
  • 举报
回复
有接收的时候,会快一点。
internet91 2012-12-25
  • 打赏
  • 举报
回复
问题补充: 使用UDP发送才2M/s,而且只是发送,不考虑接收端是否接收到,所以速度太慢了。而我用TCP发送却可以达到8M/s,不是说UDP更快吗,所以应该有改进的方法。我设置了缓存,效果也不佳。
blowlow 2012-12-25
  • 打赏
  • 举报
回复
TCP发送,数据在发送到网卡前会自动组包的,这样能够优化效率。 UDP发送的话,你要以MTU的大小来发送,绝对比TCP发送快!
你妹的特盗不 2012-12-25
  • 打赏
  • 举报
回复
建议不要使用一个线程发送. 采用多线程,还有发送包的大小选择,也很关键.
Joseph-Growth 2012-12-24
  • 打赏
  • 举报
回复
我想你说了些fh。你想提高sendto的效率,这里我有一个问题,如果你解决的话,可以继续下面的解答。用sendto发送的144M数据内容,你接收的时候,按照编号重新排列了吗?考虑一下udp可是不可靠传输。不然你接收的包也是毫无意义的呀! 再说你的问题,sendto的效率要考虑到很多问题,比如说缓冲区大小,理论上有个阀值,阀值附近时是传输的上限,这个阀值根据具体环境而定,跟系统和网络I/0紧密相关。
zzz_zou 2012-12-24
  • 打赏
  • 举报
回复
注释掉sendto语句和没注释掉差别未免也太大了吧,注释掉了你就不会发送了啊。和发送比较没什么意义啊。 我觉得提高sendto的性能,可以尝试一次发送的数据大一点。
xuggzu 2012-12-22
  • 打赏
  • 举报
回复
如果lz单纯的想提高数据发送效率,我想首先应该修改的是一次发送的数据包的大小,因为它与网络带宽有直接的关系。
________________________________________

阿典的博客 CSS+DIV+ASP.NET+c#+ACCESS
广东轻工职业技术学院 软件学院 软件测试051 周典
________________________________________

________________

简单介绍:

该博客系统是阿典在大二的网页设计实训中完成。
1.设计: 整站采用DIV+CSS的标准化设计,大大缩减页面代码,使页面的表现和内容相分离。
2.安全: 同时还对网页进行了安全检查,如对注入和'or'='or'万能登录作了检测,整站的
安全性能比较好。
3.使用代码隐藏(code-behind)把普通页面代码和C#程序代码分离。
功能上虽然简单,但都算基本实现了博客的简单功能。

________________

________________

服务器配置要求:

1. .net framework1.1以上;
2. IIS5.0以上;
3. 如果服务器是XP系统,请在DataBase文件夹下面的blog.mdb属性的安全加一个
用户:aspnet,并且将权限设为完全控制;
________________

________________

css引用说明

css文件夹下面的:
IndexCss.css在index.html页面中引用
index_show_foot_top.css是index.aspx,show.aspx,foot.ascx,top.ascx的样式其它
样式文件是各个后台页面的样式
IndexCss.css
AdminCss.css在admin.aspx页面中引用
AdminLoginCss.css在Login.aspx页面中引用
AdminLeftCss.css在left.aspx页面中引用
AdminRightCss.css在Right.aspx页面中引用
AdminMainCss.css在Main.aspx页面中引用
________________

________________

重写URL 说明

重写bin文件夹下面的:URLRewriter.dll用来重写URL.URLrewriter.dll(可以微软网站下载)
大概记录一下实现的方法
修改web.cofing




~/(\d+)\.aspx
<SendTo>~/show.aspx?id=$1SendTo>


~/index_(.*)_(\d+)\.aspx
<SendTo>~/index.aspx?c_id=$2&name=$1SendTo>



________________

________________

致谢:


1.在整站的设计和编码过程中,使用了eWebEditor编辑器简化版, 在此表示感谢!

2.最后,还要感谢的是教我网页设计的唐XX老师,她给了我很多的辅导.

________________
_________________________________________




18,356

社区成员

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

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