不同线程上的accept()出现错误10093
Error 10093 on accept() on different thread
我创建了一个while循环,其中包含winsock-accept()方法,但每次循环时都会抛出错误10093(WSAData尚未初始化)。WSAData是在启动接受线程的主线程中初始化的。
我不知道这是否与线程有关。启动WSAData和线程的代码如下:
iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult != 0) {
printf("WSAStartup failed with error: %dn", iResult);
return 1;
}
// Things in between (bind, listen...)
std::thread acceptThread(Accept);
这是我制作的Accept()方法(好吧,实际调用的Accept方法):
SOCKET temp = accept(ListenSocket, NULL, NULL);
之后,我检查"温度",这就是错误发生的时候
WSAStartup之所以能工作,是因为它没有进入if.
套接字没有线程亲和性,因此您可以在一个线程中自由创建套接字,并在另一个线程使用它。您不需要在每个线程的基础上调用WSAStartup()
。如果accept()
报告WSANOTINITIALISED
,那么WSAStartup()
实际上没有被预先调用,或者WSACleanup()
被提前调用。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- Winsock发送失败,错误为10093
- 不同线程上的accept()出现错误10093