c++非阻塞客户端/服务器TCP连接 socket编程代码示例

本文通过示例代码展示了如何使用C++进行非阻塞TCP服务器和客户端的编程。服务器在特定端口仅允许一个实例,而客户端可以启动多个进程进行连接。服务器会非阻塞地轮询检查每个连接,一旦接收到数据,即打印出来。
摘要由CSDN通过智能技术生成

服务器在一台机器上同一个端口只能开启一个。 

客户端可以开启多个程序进程以连接服务器的端口。

服务器会对连接的客户端非阻塞轮询遍历查看是否有recv到数据。如果有则打印出来。

 

话不多说 直接上代码

服务器

#ifndef __TCP_SERVER__
#define __TCP_SERVER__
//#include "tcpServer.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
#include <vector>


//网络库
#include <WinSock2.h>
//多线程
//#include <thread>

//加载lib
#pragma comment(lib, "ws2_32.lib")

//端口定义
#define IPORT 36888
//实现bzero
#define bzero(a,b) memset(a, 0, b)
//监听队列最大数
#define BACK_LOG 10

using namespace std;

void main()
{
    // 返回值
    int ret;
    // WSA -> winsockapi
    WSADATA wsad;
    DWORD err;

    ret = WSAStartup(MAKEWORD(2, 2), &wsad);
    if (ret != 0)
    {
        perror("WSA startup failed");
        system("pause");
        exit(EXIT_FAILURE);
    }

    // 声明 socket
    SOCKET fd;
    // 声明 sockaddr_in 结构
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值