В настоящее время я пытаюсь реализовать базовую программу передачи файлов клиент-сервер с использованием сокетов TCP.Клиент написан на C ++ / Qt, а сервер на C. Я столкнулся с большими трудностями при попытке отправить размер файла с сервера на клиент (целочисленное значение).Ниже приведены примеры кода.
C-сервер:
if(fileExists == '1')
{
fp = fopen(filename, "r");
fseek(fp, 0L, SEEK_END);
fileSize = ftell(fp);
printf("%d\n", fileSize);
send(client_socket, &fileSize, sizeof(fileSize), 0);
}
Qt Client:
void Client::receiveFile(QString filename)
{
qint32 fileSize;
clientSocket->waitForReadyRead(1000);
clientSocket->read(fileSize);
qDebug() << fileSize;
}
Проблема в том, что C правильно вычисляет размер файла как 40435408 и отправляетэто клиенту, который говорит, что размер 32767. Очевидно, что проблема лежит на стороне клиента.Я пытался выяснить проблему почти весь день и не смог.Я понимаю, что это какая-то простая и глупая ошибка, которую я совершил, и я прошу прощения за такой глупый вопрос.Я полный новичок.Кто-нибудь может помочь?