recv () возвращает SOCKET_ERROR - PullRequest
       8

recv () возвращает SOCKET_ERROR

0 голосов
/ 24 апреля 2019

Сейчас я пытаюсь изучить 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 для каждого файла, который я пробую.

...