Сейчас я пытаюсь изучить winsock, и для этого я пытаюсь просто отправить файл через сокет.Я написал весь код и получил его для частичной работы, посылая только верхнюю часть изображения, но теперь он просто полностью перестал работать.Я понятия не имею, что вызывает send и recv для возврата SOCKET_ERROR.
Если честно, я понятия не имею, что делать.Розетка просто закрывает себя, и я не знаю почему.
Вот код, который я использую для получения размера файла, а также сам файл.
cout << "Fetching file from server" << endl;
int nBytes = 4096, nLeft, idx; // I have no idea what this does, ctrl c + ctrl v always works though, maybe this is the problem?
nLeft = nBytes;
idx = 0;
while (nLeft > 0)
{
ret = recv(listening, sizef[idx], nLeft, 0);
if (ret == SOCKET_ERROR)
{
WSACleanup();
return 912;
}
nLeft -= ret;
idx += ret;
}
Вот код, который я использую для отправки размера файла и файла.
int nBytes = 4096, nLeft, idx;
nLeft = nBytes;
idx = 0;
while (nLeft > 0)
{
ret = send(clientSocket, &cstr[idx], nLeft, 0);
if (ret == SOCKET_ERROR)
{
cerr << "Oops, failed to send, the programmer shit his pants, or the client did";
return 912;
}
nLeft -= ret;
idx += ret;
}
Теперь предполагаемый результат этой функции - просто получить файл, но он всегда возвращает SOCKET_ERROR для каждого файла, который я пробую.