如何通过套接字发送大量二进制数据?

时间:2014-02-02 19:12:55

标签: c sockets binary-data

我正在尝试通过套接字将二进制数据从服务器发送到客户端(我的应用程序使用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);

0 个答案:

没有答案