gpt4 book ai didi

c - C 中的客户端服务器应用程序中缺少字节

转载 作者:太空宇宙 更新时间:2023-11-04 07:23:56 27 4
gpt4 key购买 nike

我已经使用 SSL 库在 C 中创建了一个客户端/服务器应用程序。我面临的问题是每次发送文件时,文件开头都会丢失一些字节。

假设我发送的文本文件包含

123456789

当客户端收到它包含的文件时

56789

服务器代码

void sendFile(SSL* ssl)
{
char response[2048] = {0};
int read = 0;
FILE* fd;

fd = fopen("snt.txt","rb");

if (fd == NULL)
{
printf("file loading failed\n");
return;
}
while ((read=fread(response,sizeof(char),1024,fd)) > 0)
{
SSL_write(ssl,response,read);
printf("read :%d\n",read);
//puts(response);
//printf("***Data Sent***\n");
memset(response,0,1024);
}
printf("***Data Sent***\n");
fclose(fd);
}

客户端代码

FILE *ft;
char filebuf[2048];
int read = 0;
int error_check=0;
ft = fopen("rcv.txt","ab");
if (ft == NULL)
{
printf("Can not open file to write\n");
return -1;
}
memset(filebuf,0,2048);
int cnk=1;
while ((error_check=BIO_read(bio,&read,sizeof(int)))>0)
{
//printf("%d read\n",read);
if (error_check==0)
break;

if (read==0)
break;

BIO_read(bio,filebuf,read);
printf("%d Chunk Recieved\n",cnk++);
//puts(filebuf);
fwrite(filebuf,sizeof(char),strlen(filebuf),ft);
memset(filebuf,0,2048);

}
printf("***File Recieved***");
fclose(ft);

另一个问题是客户端未终止,控制不会脱离 while 循环,请指导我如何解决这些问题

最佳答案

假设 size(int)4,我会说第 1st 4 个字节被这条线读取:

while ((error_check=BIO_read(bio,&read,sizeof(int)))>0)

剩下的数据发送到这一行:

BIO_read(bio,filebuf,read);

后者将其读入 filebuf,然后将其写入文件 rcv.txt

关于c - C 中的客户端服务器应用程序中缺少字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com