社区
网络编程
帖子详情
udp socket来传输大文件问题
cansanta
2005-06-08 10:29:56
我想用udp socket来传输大文件(大于64k),因为一个udp包的最大数据长度是64k.请问我需不需要再传输的时候,将文件分成64k一下的包,然后再接收端组包?有人说不用,socket会自动的将大于64k文件分成几个udp包,接收端自动的将几个udp包组成一个文件.请问请问我需不需要再传输的时候,将文件分成64k一下的包,然后再接收端组包?
...全文
389
9
打赏
收藏
udp socket来传输大文件问题
我想用udp socket来传输大文件(大于64k),因为一个udp包的最大数据长度是64k.请问我需不需要再传输的时候,将文件分成64k一下的包,然后再接收端组包?有人说不用,socket会自动的将大于64k文件分成几个udp包,接收端自动的将几个udp包组成一个文件.请问请问我需不需要再传输的时候,将文件分成64k一下的包,然后再接收端组包?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sct
2005-09-06
打赏
举报
回复
xuexi
Sander
2005-06-13
打赏
举报
回复
首先解决,packet size的问题,
然后考虑用UDP实现可靠文件传输
http://hackangel.go1.icpcn.com/lilisoft/UDPTrsmtFile.rar
这个是个例子
cansanta
2005-06-12
打赏
举报
回复
谢谢各位的回答。程序的通讯因为涉及和其他人的接口,现在他们都是用udp实现的。所以最好用udp实现。我和其他模块之间是在局域网中通讯,只要文件传输中包的丢失率不高,文件是可以丢失的。由于本人对socket通讯不太熟。请大家根据我的提示再帮我。考虑考虑。
Sander
2005-06-09
打赏
举报
回复
理论上你可以不组包,但是这个肯定不行。
因为udp是不可靠的协议, 接收的时候,是按包接收,而这个包,是driver 发的包,
如果你发的包大于driver 的buffer, 那它会自动分包,如果你 有一个收不到,你就不知道是那个了。
特别是在internet 的状况下 ,丢包机会会更大
fisker0303
2005-06-09
打赏
举报
回复
udp是不可靠的协议,64K显然要自己分包了,并要采用适当的组包算法,可以参考TCP的实现。
简单的说,最好1个包1K或0.5K,发包过程可以如下:
typedef struct _Data
{
int iType; // 包的消息类型
int iNum; // 包的编号
char* caData; // 实际发送的数据
}DATA;
发包的时候,指定一种数据类型,如:0;
依次把包分成64份,并发出;
发送完后,可以用另一种消息类型,如:1来标志包已全部发完;
接收端根据编号组包;
如果有丢包,通知发送放重新发送;
循环上述过程... ...
xxrl
2005-06-09
打赏
举报
回复
在www.vckbase.com里面搜索一下 我下载了 但在家里面电脑里 公司里面没有
new_guy
2005-06-09
打赏
举报
回复
帮你顶。
应该看你用什么层次的编程接口吧。
记得《windows网络编程》里面 是要自己分的。
大概的算法是这样:
#dedinf MAXBUF 4000
char buf[MAXBUF];
//fill buffer with nlen byte
while(nlen>0){
int n =send(buf,sock.....);
nlen-=n;
buf+=nlen;
}
younggle
2005-06-09
打赏
举报
回复
一般来说,文件的传输是需要可靠的传输的,因为文件中少了1个字节都是不行的。所以建议你使用TCP传输,而不要使用UDP进行传输。并且使用TCP比UDP方便一些(从写程序的角度来说)。
不过如果你的UDP传输也是可靠的(需要自己实现),那也可以使用UDP。但是麻烦一些。
nuaawenlin
2005-06-09
打赏
举报
回复
加上数据头,数据尾和校验和
C#
UDP
Socket
异步
传输
文件
C#
UDP
Socket
异步
传输
文件
C#
UDP
Socket
异步
传输
文件
C#
UDP
Socket
异步
传输
文件
代码.rar
C#
UDP
Socket
异步
传输
文件
代码
基于
socket
UDP
协议实现
文件
传输
(windows vc++源代码)_
socket
大
文件
传输
基于
socket
UDP
协议实现
文件
传输
(windows vc++源代码)
UDP
传1GB的
文件
仅需15秒 该代码包含 根据
文件
内容长度生成MD5码,以供校验
文件
完整性 本代码包含windows vc++编写dll的代码
C#
UDP
Socket
异步
传输
文件
代码
C#
UDP
Socket
异步
传输
文件
代码
C#
UDP
(
Socket
)异步
传输
文件
C#
UDP
(
Socket
)异步
传输
文件
上次放的简单
网络编程
18,356
社区成员
64,217
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章