gpt4 book ai didi

c++ - 如何创建一个 "event"系统来接收数据包

转载 作者:行者123 更新时间:2023-11-30 03:13:42 35 4
gpt4 key购买 nike

所以我一直在用 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;

}

但是如果我有一个窗口想要在等待数据包的同时不断更新怎么办?该程序即将卡住。

最佳答案

WinSock 为非阻塞套接字操作提供了多种事件驱动模型:

关于c++ - 如何创建一个 "event"系统来接收数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491000/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com