读书人

linux下使用tcp传送二进制文件跟文本文

发布时间: 2012-02-22 19:36:55 作者: rapoo

linux下使用tcp传送二进制文件跟文本文件一样吗?
初学linux网络编程,在做一个简单的web server,传送文件时,先发送 "HTTP/1.0 200 OK\r\nContent-Length: %d\r\n\r\n ",然后再发送文件内容,如下
open(req-> filename, O_RDONLY)

char buf[1024];
while((readlen = read(fd, buf, filestat.st_size)) > 0)
{
send(req-> sockfd, buf, readlen, 0);
}
但这样子,发送htm等文本能成功,但如果是gif等二进制文件时,第一个1024B能发送成功,但此时客户端连接已经断开,剩下的部分就发不了去了,因为收到SIGPIPE信号,不知为什么。谁能指点下应该怎样修改来进行传送啊?
thx

[解决办法]
头文件里加个
#pragma pack(1)

试试,估计是字节对齐的问题。。

读书人网 >UNIXLINUX

热点推荐