日期:2014-05-16  浏览次数:20652 次

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)

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