当前位置: 技术问答>linux和unix
linux下使用tcp传送二进制文件跟文本文件一样吗?
来源: 互联网 发布时间:2016-01-07
本文导语: 初学linux网络编程,在做一个简单的web server,传送文件时,先发送"HTTP/1.0 200 OKrnContent-Length: %drnrn",然后再发送文件内容,如下 open(req->filename, O_RDONLY) char buf[1024]; while((readlen = read(fd, buf, filestat.st_size)) >0) { ...
初学linux网络编程,在做一个简单的web server,传送文件时,先发送"HTTP/1.0 200 OKrnContent-Length: %drnrn",然后再发送文件内容,如下
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
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)
试试,估计是字节对齐的问题。。
#pragma pack(1)
试试,估计是字节对齐的问题。。