Сокеты в C++ - отправка char* и char[]
Привет,
У меня есть следующий код для отправки данных в резьбовой сокет, потому что я не смог найти ни одного учебника в интернете для асинхронных сокетов в Windows, которые, по-видимому, лучше, чем иметь отдельные потоки для сокетов.
В любом случае, у меня есть несколько вопросов;
1. я не могу понять, как объединить char* и buf. Я также беспокоюсь о том, что это неэффективно, и это привело меня в замешательство.
2. Это наиболее эффективный способ обрабатывать входящие данные и отправлять данные? Это должно быть очень быстро, так как оно будет использоваться в производстве.
3. являются ли асинхронные сокеты более эффективными, потому что если это так, то я откажусь от этого и копну глубже, чтобы попытаться найти учебник.
void send(SOCKET socket, const char* data) { send(socket, data, sizeof(data), 0); } DWORD WINAPI receive_thread(LPVOID lpParam) { SOCKET current_client = (SOCKET)lpParam; char buf[100]; int res; // if buffer = 'hello': strstr(buf, "hello") // receive messages while (true) { res = recv(current_client, buf, sizeof(buf), 0); // read data Sleep(10); printf("Client said: %s", buf); Sleep(10); char* x = (char*)"You said: "; x += buf; // trying several things here, just isn't working strcpy_s(x, buf); send(current_client, x); // empty buffer strcpy_s(buf, ""); } }
Что я уже пробовал:
----------------------------------------------------------------