立即停止SFML tcpllistener
Instantly stop SFML TcpListener
本文关键字:SFML tcpllistener 更新时间:2023-10-16
在主线程上使用SFML TcpListener
时,如何立即停止TcpListener::accept()
函数?例如,如果我想要能够收到一个SIGINT
和清理东西。要做到这一点,我需要能够让TcpListener::accept()
函数返回断开连接或错误。
感谢Sean Cline建议的非阻塞模式和选择器
作为参考,SFML/Networking中的函数(我不确定它的其他组件)默认情况下是阻塞的,这意味着它们在完成目的(在我的情况下接受TCP连接)之前不会返回。通过使用非阻塞模式,函数将立即返回,返回其状态。对于TcpListener::accept()
,如果有一个要接受的连接并且它成功地完成了任务,它将返回sf::Socket::Status::Done
。否则,它可能返回sf::Socket::Status::Disconnected
或sf::Socket::Status::NotReady
。
对于选择器,它们允许您在单个线程上管理多个套接字,并且在您不知道哪个将首先发送数据时特别有用。
相关文章:
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- SFML RenderWindow打开窗口需要很长时间
- 矢量下标超出SFML游戏中的范围
- 获取 SFML 窗口的 HWND 和高可用性?
- 将 Vulkan 与 SFML 结合使用?
- SFML 文本未绘制在窗口上
- SFML 碰撞永远不会在我的系统中注册
- 使用对象数组对 SFML 进行动画处理
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 如何使用 SFML 在贪吃蛇游戏中定义游戏结束?
- 如何通过多类"Union variable" (sfml) 使用轮询事件
- 1d.exe找不到SFML文件?
- 当我尝试通过 mingw 使用 CMake 和 SFML 库编译项目时出错
- Declaration of IntRect SFML
- 立即停止SFML tcpllistener