C 如何通过ssl和套接字发送对象文件.o
我需要将一个对象文件从客户端发送到服务器程序。 我尝试读取文件,将其存储到缓冲区中,通过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_
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);