Итак, я работал над несколькими сетевыми программами на c ++ и столкнулся с проблемой. Я использую Winsock (версия 2) для этого, понятия не имею, лучше ли это использовать, но что угодно. Таким образом, в winsock есть функция для получения пакета (фактически 2 функции), и она ждет, пока не получит пакет, а затем продолжает работу, останавливая программу во время ожидания пакета. Мне кажется, что мне нужна какая-то система «событий», в которой есть функция, которая вызывается каждый раз, когда приходит пакет, и программа продолжает работать в ожидании пакета.
Так что, по сути, прямо сейчас, еслиЯ просто хочу напечатать (tcp) пакеты, которые я получаю, у меня есть это (сначала некоторый код запуска и создание сокетов и прочее):
char buffer[4096];
while(true){
ZeroMemory(buffer, 4096);
recv(clientSocket, buffer, 4096, 0); //Program freezes until it receives something
std::cout << buffer << std::endl;
}
Но что, если у меня есть окно, которое я хочуобновлять во время ожидания пакета? Программа просто собирается зависнуть.