前言:
在网上找了很多Socket长连接的实现方式,但是自己拿过来用都有问题,为了解决这个问题,本人花了不少时间在上面。其实 socket 长连接很简单,就是连接后不断开即可。接下来,这里贴上实现的源码例子。本人做这个东西是为了在pc上运行的游戏,所以方法的实现是基于 window api 的,linux上的也大同小异。
另外,本人也是刚实现不久,例如:心跳这些还没有去实现。如果在文章中发现什么问题,欢迎各路大牛指正。
C++ 所需头文件:
#include
#include
#include
#include
#pragma comment(lib, "ws2_32.lib")
首先就是C++代码 监听的代码(可以放到函数体内部):
// port 需要监听的端口
// listenCallback 一个客户端连接进入时,新建线程执行的方法
void ListenPort(unsigned short port, std::function listenCallback) {
// 初始化 WSA
WORD sockVersion = MAKEWORD(2, 2);
WSADATA wsaData;
if (WSAStartup(sockVersion, &wsaData) != 0) {
std::cout << "WSAStartup error!" << std::endl;
return;
}</