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)
试试,估计是字节对齐的问题。。