不准使用CAsyncSock类进行通信,用socket
时间: 2024-04-15 16:31:53 浏览: 15
好的,以下是一个使用原生Socket进行网络通信的示例代码:
```cpp
#include <iostream>
#include <thread>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int i = 0;
void dowork()
{
for (int j = 0; j < 10; j++)
{
i++;
std::cout << "Thread ID: " << std::this_thread::get_id() << ", i = " << i << std::endl;
}
}
int main()
{
const int numThreads = 5;
std::thread threads[numThreads];
// 初始化 Winsock
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
std::cerr << "Failed to initialize Winsock" << std::endl;
return 1;
}
for (int i = 0; i < numThreads; ++i)
{
threads[i] = std::thread(dowork);
}
for (int i = 0; i < numThreads; ++i)
{
threads[i].join();
}
std::cout << "Final value of i: " << i << std::endl;
// 清理 Winsock
WSACleanup();
return 0;
}
```
在这个示例代码中,我们使用了`<winsock2.h>`头文件来包含Socket相关的函数和数据结构。首先,我们定义了一个静态整型变量i。然后,我们创建了5个线程,并在每个线程中执行dowork函数,该函数对静态变量i进行累加操作。最后,我们等待所有线程执行完毕,并输出最终静态变量i的值。
请注意,以上代码在Windows平台下使用了Winsock库进行Socket编程。需要确保在编译时链接了`ws2_32.lib`库。
希望这个示例代码对您有所帮助!如果您有任何进一步的问题,请随时提问。