Похоже, что эта комбинация работает и дает правильную контрольную сумму для файлов.Важно использовать fclose () в конце, а также отправлять правильное количество байтов, захватывая возвращаемые значения, как сказали люди.Спасибо за ответы, хотя я немного обеспокоился, когда люди упомянули, что функции send и rcv отправляют максимум 255 в моем случае байтов и могут отправлять меньше.Я провел много испытаний и не заметил проблемы с передачей.
Отправьте код:
FILE *fp;
fp = fopen("c:\\file.txt", "rb");
while(!feof(fp))
{
bzero(buffer,256);
n = fread(buffer,sizeof(char),255,fp);
send(remsock,buffer,n,0);
if(n < 0)
error("ERROR writing to socket");
}
send(remsock,"done",255,0);
fclose(fp);
Получите код:
FILE *fp;
fp = fopen("c:\\receivedfile.txt", "wb");
while(1)
{
n = recv(sockfd,buffer,255,0);
if(compare(buffer,"done") == 0)
break;
fwrite(buffer,1,n,fp);
}
printf("File Transfer complete\n\n");
fclose(fp);