C++网络编程

名词概念:

套接字:套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双间通信的端点,它构成了单个主机内及整个网络间的编程界面。

文件描述符(File descripter):就是一个整数,这个整数唯一标识了操作系统中某个被打开的“文件”。

新函数:

基本函数:

SOCKET socket(int domain, int type, int protocol);

解释:

domain:指定地址族,通常使用 AF_INET 表示 IPv4 地址族,AF_INET6 表示 IPv6 地址族

type:指定套接字类型,SOCK_STREAM 表示面向连接的字节流套接字(通常用于 TCP 协议),SOCK_DGRAM 表示无连接的数据报套接字(通常用于 UDP 协议)。

protocol:指定使用的协议,对于 SOCK_STREAM 套接字,通常使用 IPPROTO_TCP 表示 TCP 协议,对于 SOCK_DGRAM 套接字,通常使用 IPPROTO_UDP 表示 UDP 协议。

perror();

该库函数的原型是:void perror(const char *s);
参数s:如果我们想要在错误提示字符串之前添加自己想要的打印信息,就通过此参数传入,如果不需要添加信息,则让其为空字符串即可。
同时,在使用该库函数时需要包含头文件:#include <stdio.h>

bind();

此函数能够将套接字文件描述符、端口号和ip绑定到一起

注意:
绑定的一定是自己的 ip和和端口,不是对方的;比如对于TCP服务器来说绑定的就是服务器自己的ip和端口

关于监听合集的函数:

// 创建一个文件描述符集合
fd_set readfds;

// 此操作将集合中所有文件描述符标志位清零,确保集合初始为空
FD_ZERO(&readfds);

// 此操作将指定的监听套接字添加到文件描述符集合中,使 select 函数能对其进行状态监测
FD_SET(listenSocket, &readfds);

// 设置超时时间为 10 秒
struct timeval timeout;
timeout.tv_sec = 10;
timeout.tv_usec = 0;

// 此操作调用 select 函数来监测文件描述符集合中的套接字状态,若有状态变化或超时则返回
int result = select(0, &readfds, NULL, NULL, &timeout);

// 此操作检查监听套接字是否在集合中且状态变为可读,若成立则意味着可能有新连接到来
if (FD_ISSET(listenSocket, &readfds)) {
    // 处理新连接的相关操作
}

// 此操作将指定的监听套接字从文件描述符集合中移除
FD_CLR(listenSocket, &readfds);

注意:

select函数会改变监听合集的值,所以在使用的时候通常会将监听合集复制一份,使用副本进行监听。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值