socket传送文件问题,sendto和send一次可以发多大的数据?recv和recvfrom一次可以接收多少数据?

cen_jin_long 2008-03-12 12:06:32
比如我有一个100M的文件?
send/sendto一次可以发多少?
而接收一次可以接收多少?
...全文
1688 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangzhongmin 2008-03-19
  • 打赏
  • 举报
回复
应该要这样发,边从文件中取出数据边发送就可以了,
zwl_19851220 2008-03-14
  • 打赏
  • 举报
回复
send 是用于面向连接的套接字(TCP SOCKET)
sendto 用于面向数据包的套接字(UDP SOCKET)
cen_jin_long 2008-03-14
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 arong1234 的回复:]
suppose 数据在buffer内,长度为length
[code=C++]
int pos =0;
int result
while(pos < length)
{
result = send(sd, buffer+pos, length -pos,0);
if(result > 0)
{
pos += result;
}else{// <=0就是失败
break;
};
}

[/code]
[/Quote]

榮哥啊,實在不明白,發送的Buffer + pos。是已經發送了的。

這到低怎麼回事。對文件發送真是不明白。
Torch009 2008-03-14
  • 打赏
  • 举报
回复
你的头像很恶心
cen_jin_long 2008-03-14
  • 打赏
  • 举报
回复

send 它也是要这样断送吗?发送多少个?然后继续发?
琴乐音 2008-03-14
  • 打赏
  • 举报
回复
recv不是你设置多少buffer就能接到多少的 每次发送和接收的数据大小都不固定,recv返回值就是用来判断接收到了多大。
通常都是用循环还接收, 直到接收完整为止。
cen_jin_long 2008-03-14
  • 打赏
  • 举报
回复

我天生愚钝。

看不明白。

传输文件真的不明白。

求助求助!!!

阿荣兄弟,给QQ我。我要加你。打扰一下都要的了。
lin_style 2008-03-14
  • 打赏
  • 举报
回复
。。楼主是想问MTU吧。。
arong1234 2008-03-14
  • 打赏
  • 举报
回复
传文件的代码是一样的啊?你只要读到内存不就是在缓冲区了么?
arong1234 2008-03-14
  • 打赏
  • 举报
回复
suppose 数据在buffer内,长度为length
[code=C++]
int pos =0;
int result
while(pos < length)
{
result = send(sd, buffer+pos, length -pos,0);
if(result > 0)
{
pos += result;
}else{//<=0就是失败
break;
};
}

[/code]
僵哥 2008-03-14
  • 打赏
  • 举报
回复
简单一点,每次读取部分数据,如果是TCP,个人建议使用64KB~4MB为大小从文件读取出来,然后进行send,完了(Overlapped方式,建议以完成通知为主,但是可以保留5到10个未决分片)再按该大小读取出来继续发送,发送完成为止,这样子相对来说,即使网络分网允许为64KB,那也可以达到相当高的利用率,并且也不至于过分由于网络速度慢,而把文件加载到内存后过多地非必要性地占用内存资源。对于UDP,这里就不再进行更多的建议,一切从简单开始。
cen_jin_long 2008-03-14
  • 打赏
  • 举报
回复

但现在想知道传送文件的方法。
  • 打赏
  • 举报
回复
你需要一本《TCP/IP详解》看看
然后一本window或者Unix网络编程的书
cen_jin_long 2008-03-13
  • 打赏
  • 举报
回复

If no error occurs, this function returns the total number of bytes sent,

这样哦, 发送多少个。
cen_jin_long 2008-03-13
  • 打赏
  • 举报
回复

你们是不是不告诉我啊,至少也写一大大段代码给我拍一下照照。

不然全部把你们拍照晒网!

呵呵。

ZiSheng 2008-03-13
  • 打赏
  • 举报
回复
兄弟,自己动手丰衣足食.
mr.zhoux 2008-03-13
  • 打赏
  • 举报
回复
冠西,你又调皮了... vckbase上找吧..
arong1234 2008-03-13
  • 打赏
  • 举报
回复
无论你尝试发送多少,send都可能发送少于这个字节数,因此TCP编程布应该依赖于发送次数,而是要确认到底发送了多少字节,从而知道下次该从哪开始继续发,看看send得返回值,了解其含义
arong1234 2008-03-13
  • 打赏
  • 举报
回复
无论你尝试发送多少,send都可能发送少于这个字节数,因此TCP编程布应该依赖于发送次数,而是要确认到底发送了多少字节,从而知道下次该从哪开始继续发,看看send得返回值,了解其含义
arong1234 2008-03-13
  • 打赏
  • 举报
回复
无论你尝试发送多少,send都可能发送少于这个字节数,因此TCP编程布应该依赖于发送次数,而是要确认到底发送了多少字节,从而知道下次该从哪开始继续发,看看send得返回值,了解其含义
加载更多回复(11)

18,356

社区成员

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

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