- 博客(4)
- 收藏
- 关注
原创 了解Posix API和TCP/IP协议栈
在网络编程中我们的服务端离不开POSIX API中的socket()、bind()、linsten()、accpet()、recv()、send()、close();三次握手发生时机:客户端connect()函数发起请求,服务端listen()建立半连接为客户端分配一个tcp控制块,服务端应答和请求进行二次握手,客户端connect应答三次握手完成,随后accpet()从连接队列move出建立好的连接并返回一个fd。accpet()函数分配一个fd,并将这个fd和连接建立的tcp控制块关联。
2025-02-25 18:27:42
501
原创 初识reactor模式:用epoll实现reactor模式的TCPserver
reactor模式又叫事件驱动模式。在主函数中,我们将会先注册socket_fd的连接事件,然后在事件循环中,socket_fd将连接事件处理(两个动作:注册事件,添加到epoll实力epfd监听事件),其他事件触发则处理事件。
2025-02-23 18:00:44
202
原创 认识IO多路复用(select/poll/epoll)
2、事件集合(fd_set):fd_set是一个bit位数组,通过这个数组可以映射到不同的文件描述符,这个数组默认是1024位,可以监听1024个文件描述符。poll在select的基础上,减少了函数的参数,工作原理基本相同:准备好一个用于监听的socket_fd(设置套接字,绑定端口,开始监听),将socket_fd加入一个结构体数组struct pollfd fds[1024]中,调用poll监听事件,将socket_fd的连接事件添加进监听的fds,将其他client_fd的读事件处理,循环往复。
2025-02-22 20:31:38
608
原创 初步认识网络IO
基本工作流程:通过sockt函数获得一个文件描述符socket_fd, 用bind函数绑定主机地址和监听端口,再用listen函数监听,如果监听客户端连接accept函数会返回一个client_fd可以用于双端通信,建立连接后recv函数和send函数就可以收发消息了。将accpet函数分配的client_fd另起一个线程,由该线程处理clien_fd上的read函数和recv函数。使用网络助手连接tcpServer,成功收发数据。三个客户端都能即时与服务端进行通信。二、一请求一线程的tcpServer。
2025-02-11 20:21:59
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人