SEND一次发送多少数据比较合适?急急急!

qweewqpkn2010 2011-12-03 10:27:53

我每次发送1200个字节, 但是发现传输一个300KB大小的TXT 文件都要等N久才好!


请问能不能一次多发送一点啊··我用QQ发送数据的时候(自己的机器上开了两个QQ对发文件),这时的速率能达到2M呢!


求解!
...全文
747 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jarrylogin 2012-02-16
  • 打赏
  • 举报
回复
TCP 1460 bytes
UDP 1472 bytes
许文君 2012-02-16
  • 打赏
  • 举报
回复
LZ开了多少线程在send
ok1234567 2012-02-16
  • 打赏
  • 举报
回复
如果使用Socket API 编程,无论收发多少字节,总是要验证的
如果想挤占带宽,就拼命往缓冲区扔数据,多多益善
如果考虑均衡,每次发送1-8k是通常的选择,中间可能依据网络状况(实际发出的比例)加点延时
yli5891 2012-02-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 reactivef 的回复:]
1)对于TCP/IP协议:
单个IP数据报文理论最大值可达65535字节;

2)依据下层的物理链路种类不同,有可能对IP数据报文进行分片:
对以太网链路一帧数据最大长度为1500字节,这时IP层发送大于1500字节的数据时就要分片发送;

3)对应用层程序而言:
调用send函数,意味着把用户缓冲区的内容拷贝到内核发送缓冲区,返回的N个字节代表发送到该缓冲区的字节数,
并不意味着……
[/Quote]
正解
erace992001 2012-02-07
  • 打赏
  • 举报
回复
这个速度不是取决全你每次的发送字节数,而是取决于人的IO读写能力,一般TCP2K或者4K,UDP1400以下
youngwolf 2012-02-07
  • 打赏
  • 举报
回复
局域网内部,一个阻塞send调用,一次发送尽可能多的数据,比如你的文件是300k,就发300k,这样速度最快。如果慢了,肯定是接收端的问题。
lghndyz 2012-02-03
  • 打赏
  • 举报
回复
可以参考飞鸽传书代码!!
百事烟 2012-02-03
  • 打赏
  • 举报
回复
internet,1M带宽 相当于 128 kB/s
百事烟 2012-02-03
  • 打赏
  • 举报
回复
windows平台
1024 ----------> 64 kB/s //最大
2048 ----------> 128 kB/s //最大

linux平台没测过,但肯定不是以上的值,要快N倍

根据网络情况3G,1024 或1400左右都可以

internet,视实际带宽设置

局域网和本机,可以设的相当大,比如20480
MFC_qin 2012-02-03
  • 打赏
  • 举报
回复
把代码贴上来,大家也好看看
shangwu_35 2012-01-21
  • 打赏
  • 举报
回复
1492~1500
xengine-qyt 2011-12-20
  • 打赏
  • 举报
回复
MTU
Eleven 2011-12-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qweewqpkn2010 的回复:]

引用 4 楼 yby4769250 的回复:

发送端有没有等等之类的延时操作?
接收端每接收一次有没有使用flush写入文件?这个函数直接执行IO,写入磁盘会相对较慢影响速度。
TCP理论上能发送65535字节的数据,IP层会根据MTU给你分包,你不用担心,你只要负责在接收端读取就行,当然,如果你是用包来传输,那就要注意,分包和粘包的问题


请教一下分包和粘包是什么,能说说吗?……
[/Quote]
TCP粘包,因为TCP是流,没有数据边界
reactiveF 2011-12-07
  • 打赏
  • 举报
回复
传输速率取决于调用send函数的频率间隔,什么时候可调用send函数写数据使用SOCKET的IO机制来判断,
比如传统的select I/O, Windows的IOCP, Linux的epoll.
qweewqpkn2010 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 reactivef 的回复:]

1)对于TCP/IP协议:
单个IP数据报文理论最大值可达65535字节;

2)依据下层的物理链路种类不同,有可能对IP数据报文进行分片:
对以太网链路一帧数据最大长度为1500字节,这时IP层发送大于1500字节的数据时就要分片发送;

3)对应用层程序而言:
调用send函数,意味着把用户缓冲区的内容拷贝到内核发送缓冲区,返回的N个字节代表发送到该缓冲区的字节数,
并不意味……
[/Quote]

不错 我在局域网内传输 我看QQ传输速率有5M ,这是怎么回事呢
qweewqpkn2010 2011-12-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yby4769250 的回复:]

发送端有没有等等之类的延时操作?
接收端每接收一次有没有使用flush写入文件?这个函数直接执行IO,写入磁盘会相对较慢影响速度。
TCP理论上能发送65535字节的数据,IP层会根据MTU给你分包,你不用担心,你只要负责在接收端读取就行,当然,如果你是用包来传输,那就要注意,分包和粘包的问题
[/Quote]

请教一下分包和粘包是什么,能说说吗?
李_军 2011-12-05
  • 打赏
  • 举报
回复
1400左右最好
tianxiaoqin1310 2011-12-05
  • 打赏
  • 举报
回复
代码贴出来看看
meyers_007 2011-12-05
  • 打赏
  • 举报
回复
在应用层发送数据包,可以不用规定大小吧!无论多大数据传到下层驱动时,都会按照协议给你重新组包在发送。
sdbus 2011-12-05
  • 打赏
  • 举报
回复
尽量多给,低层分包,效率才高
加载更多回复(5)

18,356

社区成员

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

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