C++ Socket TCP通信多连接处理的实现

本文介绍如何使用C++实现TCP服务端,支持处理多个客户端连接。通过为每个连接创建独立的数据收发线程或者利用线程池优化,确保高效地管理并发连接。
摘要由CSDN通过智能技术生成

 TCP被动连接方实现,一般就是服务端,支持同时处理多连接的请求和消息收发,每个连接分配一个数据收发线程,可以优化成线程池处理连接池的数据收发流程,已避免线程的过度使用:

#include <iostream>
#include <vector>
#include <Windows.h>
#include <map>
#include <winsock.h>
//#include <thread>
//#include <WinSock2.h>
//#include <MSWSock.h>

#pragma comment(lib, "Ws2_32.lib")
//#pragma comment(lib, "Mswsock.lib")

using namespace std;

map<SOCKET, HANDLE> s_socketThread;

void InitWs2()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;

    wVersionRequested = MAKEWORD(2, 2);
    err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0) {
        return;
    }

    if (LOBYTE(wsaData.wVersion) != 2 ||
        HIBYTE(wsaData.wVersion) != 2) {
        WSACleanup();
        return;
    }
}

void UninitWs32()
{
    WSACleanup();
}

DWORD WINAPI DoShockRecvSend(LPVOID param)
{
    SOCKET so
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值