我已经用 c 编写了一个程序,可以将文件从 c 中的客户端逐行发送到服务器。文件传输完成后,我endoffile
在txt文件中提供了一行,用于在服务器中进行字符串比较,以识别文件结束,接下来正在传输下一个文件。下一个文件必须写入服务器中的另一个文件。但问题是 strcmp 从未检测到endoffile
代码中的 并且endoffile
从客户端中的文件中接收到相同的字符串 amd 继续将下一个文件从客户端写入服务器中的同一文件。
char enof[]="endoffile";
...
do
{
rewind(appcrt);
bytes_recieved = recv(pass_arg.connected, recv_data_c, strlen(recv_data_c), 0);
recv_data_c[bytes_recieved-1] = '\0';
fputs(recv_data_c, appcrt);
if(strcmp(enof,recv_data_c) == 0){break;}
}while(check<count);
文本文件:
Necessary data
that is
being transmitted
to be written to the file
endoffile
用于从 txt 文件读取并发送到服务器的代码:
while (fgets(line, sizeof(line), crt) != NULL)
{
send(sock, line, sizeof(line), 0);
}
我必须对条件进行什么更改才能解决问题并且代码退出do....while();
循环。提前致谢。运行平台:Linux
Edit1:编辑do....while()
如下:
do
{
rewind(appcrt);
bytes_recieved = recv(pass_arg.connected, recv_data_c, 100, 0);
recv_data_c[bytes_recieved] = '\0';
fputs(recv_data_c, appcrt);
printf("%s-%s",enof,recv_data_c);
//if(strcmp(enof,recv_data_c) == 0){break;}
}while(check<count);
在终端中得到以下输出:
endoffile-file1line1
endoffile-file1line2
endoffile-file1line3
endoffile-file1line4
endoffile-file1line5
endoffile-file1line6
endoffile-endoffile
endoffile-file2line1
endoffile-file2line2
endoffile-file2line3
endoffile-file2line4
endoffile-file2line5
endoffile-file2line6
.
.
.
还是没有希望。