我正在尝试通过套接字将二进制数据从服务器发送到客户端(我的应用程序使用OpenSSL,所以我使用的是SSL_write)。
大小约为3,65MB。
但是,每次客户端请求文件并且服务器程序终止时,服务器都会失败。
底层套接字是常规的IPv4 TCP / IP套接字......
我检查了binary_buffer并且它包含数据,所以它不是空的。
所以我的问题是,如何通过套接字将此缓冲区发送到客户端,是否有一种特殊的方式来处理这些大数据的发送?
FILE *fpp;
if(!(fpp = fopen("./abinary.bin", "rb"))){
fprintf(stderr, "Error opening abinary.bin.\n");
exit(EXIT_FAILURE);
}
unsigned char *binary_buffer;
fseek(fpp, 0, SEEK_END);
unsigned long fileLength = ftell(fpp);
fseek(fpp, 0, SEEK_SET);
binary_buffer = (unsigned char *)malloc((fileLength) * sizeof(unsigned char));
if(!binary_buffer){
fprintf(stderr, "Error allocation memory for binary_buffer.\n");
exit(EXIT_FAILURE);
}
fread(binary_buffer, fileLength, 1, fpp);
SSL_write(ssl, binary_buffer, fileLength);