Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何通过ssl和套接字发送对象文件.o_C_Ssl_File Io_Send - Fatal编程技术网

C 如何通过ssl和套接字发送对象文件.o

C 如何通过ssl和套接字发送对象文件.o,c,ssl,file-io,send,C,Ssl,File Io,Send,我需要将一个对象文件从客户端发送到服务器程序。 我尝试读取文件,将其存储到缓冲区中,通过ssl发送缓冲区,然后写入服务器程序中的文件。 这不适用于.o文件。这就是被驱逐的精灵 这是我的一些代码 读取文件 void readFile(char filename[]) { FILE *input_file; char line[BUFSIZ]; input_file = fopen(filename, "r"); if(input_

我需要将一个对象文件从客户端发送到服务器程序。 我尝试读取文件,将其存储到缓冲区中,通过ssl发送缓冲区,然后写入服务器程序中的文件。 这不适用于.o文件。这就是被驱逐的精灵

这是我的一些代码

读取文件

void readFile(char filename[])  
{
    FILE        *input_file;
    char        line[BUFSIZ];

    input_file = fopen(filename, "r");

    if(input_file == NULL){
        printf("cannot open input_file '%s'\n", filename );
        exit(EXIT_FAILURE);
    }

while (fgets(line,sizeof line, input_file) != NULL) {

    for(int i = 0; i<strlen(line); i++){
        current_file[i] = line[i];
    }   
}}
是否可以读取对象文件,然后将其存储在缓冲区中


有其他方法发送这些文件吗?

一个.o文件没有什么特别之处,它只是一系列存储在光盘上的字节,并为其分配了文件名和扩展名

我的猜测是,您需要以不同的方式处理文件,因为它将是二进制数据。它不会有你目前正在阅读的“通常”的线条概念

我想看一下以下内容:


首先尝试在本地读取然后写入文件,以检查文件是在传输过程中还是在本地I/O例程中被损坏?

这是一个用于缓冲二进制文件(如“对象”文件)的示例代码。为了简洁起见,没有检查和指针维护

 FILE *file;
 char *buffer;
 unsigned long len;
 unsigned char buffer*;
 //open in binary mode
 file = fopen(name, "rb");
 //check file size
 fseek(file, 0, SEEK_END);
 len = ftell(file);
 fseek(file, 0, SEEK_SET);
 //allocate buffer accordingly
 buffer = (unsigned char *) calloc (1, fileLen + 1); //1 byte for the terminator
 //Store into buffer
 fread(buffer, len, 1, file);

首先,对象文件是二进制文件,应该使用
b
标志打开,以
fopen
。其次,在读取二进制文件时不能使用
fgets
,因为该函数将数据解释为文本,并且当它包含二进制数据值0(用于字符串终止)或10(这是换行符,二进制文件没有行)以及其他值时,该函数将失败。使用
fread
阅读文件。为有好的回复的朋友们干杯。。这里是一个->到一个工作的读写函数。
 FILE *file;
 char *buffer;
 unsigned long len;
 unsigned char buffer*;
 //open in binary mode
 file = fopen(name, "rb");
 //check file size
 fseek(file, 0, SEEK_END);
 len = ftell(file);
 fseek(file, 0, SEEK_SET);
 //allocate buffer accordingly
 buffer = (unsigned char *) calloc (1, fileLen + 1); //1 byte for the terminator
 //Store into buffer
 fread(buffer, len, 1, file);