
Linux网络编程
月雲之霄
这个作者很懒,什么都没留下…
展开
-
混合欢迎使用优快云-markdown编辑器
#include <iostream> using namespace std; class SingleCore { public: virtual void Show() = 0; }; class SingleCoreA :public SingleCore { public: void Show() { cout << "Single Core A" << endl; } }; class SingleCoreB :public Singl原创 2020-10-28 22:47:38 · 147 阅读 · 0 评论 -
epoll-ET边沿非阻塞
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include...原创 2018-12-20 22:41:19 · 431 阅读 · 0 评论 -
eventfd
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/eventfd.h> #include <stdint.h> /* Definition of uint64_t */ #define handle_error(msg) d...原创 2019-08-02 19:01:17 · 2053 阅读 · 0 评论 -
eventfd(一)
函数原型:创建的时候可以传入一个计数器的初始值initval。 第二个参数flags在linux 2.6.26之前的版本是没有使用的,必须初始化为0,在2.6.27之后的版本flag才被使用。 #include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); 分析: flags 可以是以下值的 OR...原创 2019-08-05 14:08:50 · 1858 阅读 · 0 评论 -
eventfd(四)
#include <stdio.h> #include <stdlib.h> #include <sys/eventfd.h> #include <pthread.h> #include <unistd.h> int efd; void* threadFunc() { uint64_t buffer; int r...原创 2019-08-05 14:57:39 · 122 阅读 · 0 评论 -
【1】TCP三次握手的第三次的 ack包丢失会怎样?
面试题: 在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢? 相信了解 tcp 协议的人,三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端接收到 syn + ack 之后,向 server 发送的 ack 包 由于各种原因 server 没有收到。这时 client, server 分别会进行怎样的处理...转载 2019-08-08 21:02:44 · 1451 阅读 · 0 评论 -
长连接和Keepalive详解
TCP协议中有长连接和短连接之分。短连接在数据包发送完成后就会自己断开,长连接在发包完毕后,会在一定的时间内保持连接,即我们通常所说的Keepalive(存活定时器)功能。 默认的Keepalive超时需要7,200,000 milliseconds,即2小时,探测次数为5次。它的功效和用户自己实现的心跳机制是一样的。开启Keepalive功能需要消耗额外的宽带和流量,尽管这微不足道,但在按流量计...原创 2019-08-11 20:11:31 · 1067 阅读 · 0 评论 -
长连接和Keepalive详解
客户端主机依旧活跃(up)运行,并且从服务器可到达。从客户端TCP的正常响应,服务器知道对方仍然活跃。服务器的TCP为接下来的两小时复位存活定时器,如果在这两个小时到期之前,连接上发生应用程序的通信,则定时器重新为往下的两小时复位,并且接着交换数据。 客户端已经崩溃,或者已经关闭(down),或者正在重启过程中。在这两种情况下,它的TCP都不会响应。服务器没有收到对其发出探测的响应,并且在75秒...转载 2019-08-11 20:15:50 · 351 阅读 · 0 评论 -
非阻塞connect
在 socket 是阻塞模式下 connect 函数会一直到有明确的结果才会返回(或连接成功或连接失败),如果服务器地址“较远”,连接速度比较慢,connect 函数在连接过程中可能会导致程序阻塞在 connect 函数处好一会儿(如两三秒之久),虽然这一般也不会对依赖于网络通信的程序造成什么影响,但在实际项目中,我们一般倾向使用所谓的异步的 connect技术,或者叫非阻塞的 connect。...原创 2019-08-11 22:09:14 · 275 阅读 · 0 评论 -
IO多路复用之poll
1. poll函数原型: int poll(struct pollfd *fds, nfds_t nfds, int timeout); 参数: fds:指向一个结构体数组的第0个元素的指针,每个数组元素都是一个struct pollfd结构,用于指定测试某个给定的fd的条件 nfds:表示fds结构体数组的长度 timeout:表示poll函数的超时时间,单位是毫秒 ...原创 2019-05-01 16:27:19 · 248 阅读 · 0 评论 -
网络编程套接字API
uint32_t htonl(uint32_t hostlong); uint16_t htons(uint16_t hostshort); uint32_t ntohl(uint32_t netlong); uint16_t ntohs(uint16_t netshort); int inet_pton(int family, const char *strptr, void *a...原创 2019-05-01 14:24:03 · 418 阅读 · 0 评论 -
IO多路复用之select
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 分析: nfds: 监控的文件描述符集里最大文件描述符加1,因为此参数会告诉内核检测前多少个文件描述符的状态 rea...原创 2019-04-23 22:04:26 · 143 阅读 · 0 评论 -
基本TCP套接字编程
1. socket函数原型: #include <sys/socket.h> int socket(int domain, int type, int protocol); 2. bind函数原型: #include <sys/socket.h> int bind(int sockfd, struct sockaddr *my_addr, socklen_t...原创 2018-11-30 18:44:17 · 193 阅读 · 0 评论 -
select函数(一)
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数: nfds:监控的文件描述符集里最大文件描述...原创 2018-12-12 20:53:40 · 302 阅读 · 1 评论 -
Linux网络编程目录
UNIX网络编程目录 1.TCP三次握手的第三次的 ack包丢失会怎样? 2.inux网络编程“惊群”问题总结原创 2018-12-12 21:18:49 · 467 阅读 · 0 评论 -
IO多路复用之epoll
一、epoll函数族 1. 函数epoll_creat:该函数生成一个epoll专用的文件描述符 #include <sys/epoll.h> int epoll_creae(int size); //epoll上能关注的最大描述符数 2.epoll_ctl:用于控制某个epoll文件描述符事件,可以注册、修改、删除 #include <sys/epoll...原创 2018-12-17 11:21:35 · 248 阅读 · 2 评论 -
poll函数
#include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); 参数: fds:监听的文件描述符【数组】 struct pllfd { int fd; 待监听的文件描述符 short events; 待监听的文件描述符对应的监听事件 short r...原创 2018-12-11 21:24:13 · 557 阅读 · 0 评论 -
服务器框架
一、Reactor模式 Reactor模式,它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元)。除此之外,主线程(I/O处理单元)不作任何其他实质性工作。读写数据,接收新的连接,以及处理客户请求均在工作线程(逻辑单元)完成。 使用同步I/O模型(以epoll_wait为例)实现的Reactor模式的工作流程是: 主线程往ep...原创 2019-03-12 16:24:12 · 200 阅读 · 0 评论 -
02-基本TCP套接字编程
//server.c #include <stdio.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <ctype.h> #include <sys/socket.h> #include <stdlib.h> #incl原创 2018-12-02 16:59:39 · 233 阅读 · 0 评论