社区
网络编程
帖子详情
socket传送文件问题,sendto和send一次可以发多大的数据?recv和recvfrom一次可以接收多少数据?
cen_jin_long
2008-03-12 12:06:32
比如我有一个100M的文件?
send/sendto一次可以发多少?
而接收一次可以接收多少?
...全文
1688
31
打赏
收藏
socket传送文件问题,sendto和send一次可以发多大的数据?recv和recvfrom一次可以接收多少数据?
比如我有一个100M的文件? send/sendto一次可以发多少? 而接收一次可以接收多少?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
但现在想知道传送文件的方法。
珍惜生命远离CPP
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)
socket
中
recv
跟
recv
from,
send
跟
send
to
recv
和
send
函数用于tcp传输
recv
from和
send
to用于udp传输
recv
和
send
函数提供了和read和write差不多的功能。不过它们提供了第四个参数来控制读写操作。 UDP套接字是无连接协议,必须使用
send
to函数发送
数据
,必须使用
recv
from函数
接收
数据
,发送时需指明目的地址。
send
to函数与
send
功能基本相同,
recv
from与
recv
功能基本相同,只不过...
【
Socket
网络编程】12.
send
()、
recv
()、
send
to() 和
recv
from() 函数解析
send
、
recv
、
send
to和
recv
from函数解析
send
、
recv
和
send
to、
recv
from,一般情况下,
send
、
recv
在TCP协议下使用,
send
to、
recv
from在UDP协议下使用,也可以在TCP协议下使用,不过用的很少。 1、
send
() 这里只描述同步
socket
的
send
函数的执行流程。 s:套接字 | buf:存储发送
数据
| len:发送
数据
长度 当调用该函数时,
send
先比较待发送
数据
的长度len和套接字s的发送缓冲的长度, 如果len大于s的发送缓冲区的长度,该函
【
socket
】
recv
from/
send
to、
recv
/
send
、read/write问答
【代码】【
socket
】
recv
from/
send
to、
recv
/
send
、read/write问答。
send
()、
send
to()和
recv
()、
recv
from()的使用
udp通讯中的
send
to()需要在参数里指定
接收
方的地址/端口,
recv
from()则在参数中存放
接收
发送方的地址/端口,与之对应的
send
()和
recv
()则不需要如此,但是在调用
send
()之前,需要为套接字指定
接收
方的地址/端口(这样该函数才知道要把
数据
发往哪里),在调用
recv
()之前,可以为套接字指定发送方的地址/端口,这样该函数就只
接收
指定的发送方的
数据
,当然若不指定也可,该函数就可以
send
/
send
to和
recv
/
recv
from的区别
一般情况下:
send
(),
recv
()用于TCP,
send
to()及
recv
from()用于UDP 但是
send
(),
recv
()也可以用于UDP,
send
to()及
recv
from()也可以用于TCP
send
to可以在参数中指定发送的目标地址 ,
send
需要
socket
已建立连接,
send
to 可用于无连接的
socket
对于
send
的有连接
socket
,两者一样,
send
to最后两个参数没用.
send
函数 int
send
(
SOCKET
s , const char FAR *buf ,
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章