C语言中socket怎样传送文件

naturebe 2011-05-26 03:38:53
我用的是C语言,Linux下的socket编程,已经实现了两遍可以互相发送读取信息,
还想编一个能够发送文件的程序(不单是文本文档,还能传输图片,频频等其他文件)
比如,建立连接后,提示输入路径以及文件名,输入后然后传输到另一个终端。

希望大家大家指点一下,比如用什么函数,或者简单说下怎样实现。谢谢了。
...全文
554 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Qlaiaqu 2011-05-27
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
................
数据有时候不能一次性全部接收完毕,接收多个包也有可能出线粘包的问题,所以必须对结果进行边界的校验。必须的!
南京浪人甲 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhao4zhong1 的回复:]

不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
[/Quote]
抽象。。。。
赵4老师 2011-05-27
  • 打赏
  • 举报
回复
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
Soulic 2011-05-27
  • 打赏
  • 举报
回复
既然已经可以互相发送信息了,那就好办啦,加上文件读取的部分就行了
嘻嘻嘻_ 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shanki_pm 的回复:]
引用 10 楼 zhao4zhong1 的回复:

不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!

抽象。。。。
[/Quote]

还真是抽象啊
CrackValue 2011-05-27
  • 打赏
  • 举报
回复
学习了,mark
naturebe 2011-05-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 shanki_pm 的回复:]

引用 10 楼 zhao4zhong1 的回复:

不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!

抽象。。。。
[/Quote]

+1
naturebe 2011-05-27
  • 打赏
  • 举报
回复
真高兴,这次有这么多人帮忙~
naturebe 2011-05-27
  • 打赏
  • 举报
回复
谢谢大家。。。
vcf_reader 2011-05-26
  • 打赏
  • 举报
回复
读内容,发内容
晚晨 2011-05-26
  • 打赏
  • 举报
回复
接收端还是一个缓冲一个缓冲的收啊,但是为此收完了你要对数据进行处理,如果是视频你可以直接播放,如果是文件你就保存。知道收完为止。
接收端示例
int recvLen =0;
f= fopen( .......
do
{
char buf[TRAN_SIZE];
recvLen = recv(s,buf,sizeof(buf),0);
/*一下是文件合并*/
write()
*/

}while(recvLen==-1); //表示传输完毕,或者应用协议中规定的结束标志
firefoxbug 2011-05-26
  • 打赏
  • 举报
回复
这样说,一般的文件信息(比较重要的信息)传输都是用TCP传输的,能保证不丢失,但是像你说的视频之类的,由于所占空间比较大,可以采用UDP传输。我这个学期也做了一些socket的传输,前段时间刚好做了个文件传输的,你需要的话发wanghuazai@vip.qq.com找我···
贪食蛇男 2011-05-26
  • 打赏
  • 举报
回复
和互相发读信息一样,你互相发读信息是 connect后 send和 recv,他们用来发送和接收一个缓冲区,你说的发读信息,只是看到了发字符串,其实,字符串不就是个缓冲区?
你可以把文件拆开来发不就行了嘛,一次发4K比如,但是双方要有一个基本的协商,发文件前可以先发一个包,这个包里定义了你自己的一个简单的应用层协议,定义文件名,文件大小等,后面开始发文件,很简单的,和发字符串没什么两样。

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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