LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 932|回复: 7

请教大家一个关于文件传输的问题嘛.谢谢大家了

[复制链接]
发表于 2007-3-21 10:11:21 | 显示全部楼层 |阅读模式
我想传输一个文件夹,我先将文件夹打包成了tar.bz2格式,比如说文件夹为 test.tar.bz2,然后我要把它传输到客户端去.我是这样的.

fd = open("test.tar.bz2", O_RDONLY);
while (read(fd, buf, 8192) > 0)
{
     write(sockfd, buf, strlen(buf));
}

在接收端是这样的:

fd = open("test.tar.bz2", O_RDWR|O_CREAT, 0644);
while (read(sockfd, buf, 8192) > 0)
{
     write(fd, buf, strlen(buf));
}

但是却不能将文件传输过去,请问这是为什么啊? 谢谢大家了
发表于 2007-3-21 11:01:14 | 显示全部楼层
别的暂且不说, 楼主请思考: strlen 究竟是作什么用的, 用在这两个程序中, 它会起到什么样的效果
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-21 11:09:06 | 显示全部楼层
嗯.我后来把strlen()改成read()返回的字节数之后就OK了
不过您刚才说"别的暂且不说", 请问一下我的代码中还有什么地方需要再改进一下的吗?我刚学编程没多久.很多地方还不太懂,谢谢!
回复 支持 反对

使用道具 举报

发表于 2007-3-21 12:32:32 | 显示全部楼层
我根本没看楼主的程序, 只是一打眼看到了 strlen, 直觉告诉我它被滥用了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-21 12:43:17 | 显示全部楼层
嗯. 谢谢了, 以后我多注意注意这些细节问题!
回复 支持 反对

使用道具 举报

发表于 2007-3-25 11:42:01 | 显示全部楼层
btw ftp在传输的时候是不是也先打包阿
如果不是的话它又是怎么弄得呢
回复 支持 反对

使用道具 举报

发表于 2007-3-27 10:14:17 | 显示全部楼层
请问 strlen 可不可以用sizeof代替!
回复 支持 反对

使用道具 举报

发表于 2007-3-27 10:46:20 | 显示全部楼层
Post by ppbbcc
请问 strlen 可不可以用sizeof代替!

man 2 read
去仔细看看究竟它需要什么样的参数
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表