【发布时间】:2011-04-11 00:44:49
【问题描述】:
谁能指导我是否有通过 tcp 套接字发送图像(特别是 .jpeg 文件)的特殊方式?到目前为止,我正在开发一个似乎可以很好地发送所有文本数据的网络服务器。当涉及到 jpeg 图像时,会发送标头,但是在发送实际数据时,Cygwin 控制台会冻结。
我发送数据的方式是首先打开文件,将数据读入缓冲区,然后将其推送。有什么建议吗?
while(!feof(sendFile)){
bzero(send_buffer,sizeof(send_buffer));
result = fread (send_buffer,1,sizeof(send_buffer),sendFile);
while(result>0){
result = fread (send_buffer,1,sizeof(send_buffer),sendFile);
if(ferror(sendFile)){
printf("Error reading file: %s\n",request_page);
}
if((test=send(new_fd,send_buffer,sizeof(send_buffer),0))<0){
printf("Send returned %d\n",test);
printf("Sending %s Failed\n", request_page);
exit(1);
}
bzero(send_buffer,sizeof(send_buffer));
}
}
fclose(sendFile);
【问题讨论】:
-
我在数据传输中学到的一点:我通常会在发送前进行base64编码,在接收时进行解码,这样编码转换时数据不会丢失
-
没错,但我只是在编写服务器代码。我正在尝试为来自现有浏览器(例如 Firefox)的请求提供服务。
-
使用 HTTP 协议时不需要对数据进行 base64 编码。它旨在按原样处理二进制数据。
标签: c sockets tcp transactions