- 博客(5)
- 收藏
- 关注
原创 网络通信中的posix API 详解
① 分配并返回一个网络套接字② 创建一个tcb块 tcp control block。tcb块中有tcp连接的五元组:源IP , 源端口,目的IP,目的端口,tcp协议(6)。
2025-02-23 17:56:07
1753
原创 linux网络编程 (3) 什么是reactor?如何实现服务器百万并发
reactor是一种事件驱动编程手段,常用于高并发的网络I/O编程中。它用于处理大量的客户端请求,根据I/O上触发的不同事件,执行不同的回调函数。需要定义三个回调函数//当监听套接字上有可读事件时触发此函数,即有新连接连入//客户端套接字和连接池绑定//客户端套接字加入epoll管理//客户端套接字可读//该连接被断开close(fd);return 0;close(fd);//修改客户端fd的epoll事件,关注可写事件return 0;
2025-02-17 21:45:48
1860
原创 linux网络编程(2)I/O多路复用 、epoll使用详解
在while循环中使用epoll_wait不断去查看已被监听的套接字的事件,获取到事件后,在for循环中处理这些事件。如果是listenfd的事件,那么接收并创建一个clientfd,并将此fd的可读事件添加到epoll,让epoll管理此clientfd;epoll_wait的功能是阻塞一段事件,直到timeout时间到达或者epoll上监听的套接字有关注的事件发生,并且返回阻塞这段时间内发生事件的socket数量。一般来说,在我们的网络服务器程序中,套接字分为两大类,监听套接字和客户端套接字。
2025-02-16 12:24:19
1746
原创 linux网络编程(1)什么是网络I/O ,如何创建一个server
众所周知,linux中一切皆文件,那么所谓的一个网络I/O在linux中也是通过一个文件描述符来表示的,一个文件描述符对应一个I/O连接。我们所说的一个网络I/O也就是通常所说的一个socket连接,一个socket连接对应一个文件描述符fd。功能是将主机字节序转为网络字节序,其中htonl是将32位的数字转为网络序,用于IP;此时我们就创建好了一个监听套接字,也就是一个server,监听端口是2000。是使用网络I/O需要的结构体,为linux系统自定义,我们直接使用即可。表示该要绑定的端口是2000。
2025-02-16 11:15:51
360
原创 listen队列剖析,阻塞I/O与非阻塞I/O,同步与异步
accpet()返回的是套接字,这个套接字就代表那个已经用三次握手建立起来的TCP连接 ,这个套接字与服务器监听端口的监听套接字不同,需要严格区分。当第三次握手完成的时候,这个连接就变成了ESTABLISTENED状态,每个已完成三次握手的客户端,都放在这个队列中作为一项;accpept()函数 就是从已完成连接队列的队首位置中取出来一项【每一项都是一个已完成三次握手的TCP连接】,返回给进程。所以,从编程角度,我们要尽快的用accept()把已完成队列中的数据【TCP连接】取走。1.1监听套接字的队列。
2024-04-02 21:49:12
372
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅