Я использую 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);