Поиск завершающего символа для winsocks, который не может существовать в файлах - PullRequest
0 голосов
/ 08 июля 2019

Я использую winsocks для TCP-клиента / сервера, он отправляет const char *, проблема заключается в вызове send (clientocket, sendBuffer, strlen (sendBuffer) +1, 0) один раз отправляет каждый символ в char sendBuffer [512] индивидуально, и получает символ char символом. В идеале я хотел бы, чтобы все 512 элементов были получены «сразу», но можно обойтись без него, если это невозможно.

Итак, мне нужно найти завершающий символ, поскольку моя цель - отправлять файлы, мне нужен символ, который не может быть найден в файле . Это код, который я использую для сериализации файла

char* read_file(string path, int& len)
{
    std::ifstream infile(path);

    infile.seekg(0, infile.end);
    size_t length = infile.tellg();
    infile.seekg(0, infile.beg);
    len = length;
    char* buffer = new char[len]();

    infile.read(buffer, length);
    return buffer;
}

string load_to_buffer()
{
    char* img;
    int ln;
    img = read_file("C:\\Users\\they\\Documents\\sock.txt", ln);
    string s = "";
    for (int i = 0; i <= ln; i++){
        s += *(img + i);
    }
    return s;
}

Код для отправки:

strcpy(SenderBuffer, s.c_str());
            resend_packet:
                iSend = send(TCPClientSocket, SenderBuffer, iSenderBuffer, 0);
...