Сокет приложение не работает должным образом

Я пытаюсь написать небольшой код для отправки файла по сети в Windows, но, похоже, он не работает должным образом.
Это мой код:

char *arrFile = readFile("test.exe");
int fileSize = getFileSize("test.exe");
int sentSize = 0;
int justSent;

while(sentSize < fileSize) {
justSent = send(sock, arrFile + sentSize, fileSize - sentSize, 0);
sentSize += justSent;
}

После нескольких циклов произошла ошибка при отправке, я не знаю почему. Может кто-нибудь сказать мне причину (и решение проблемы couse: D)?

Обновить

Я использую неблокирующий сокет и получаю ошибку ‘WSAEWOULDBLOCK’, но он все равно ничего не отправляет после ошибки, пока клиент не отправит что-то обратно 🙁

Выше код C, но C ++ также: D

-1

Решение

Похоже на функцию send не работает правильно. Он возвращает -1, который затем добавляется к justSent, После нескольких итераций justSent является достаточно отрицательным, чтобы вызвать ошибку сегментации.

Чтобы исправить эту проблему, вы должны добавить код для обработки ошибки (когда send возвращает значение < 0).

Примерно так будет хорошим началом:

while(sentSize < fileSize)
{
justSent = send(sock, arrFile + sentSize, fileSize - sentSize, 0);
if(justSent < 0)
{
printf("Error!\n");
break;
}
sentSize += justSent;
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]