合集-网络编程

linux socket地址
摘要:socket地址: //socket地址其实是一个结构体,封装端口号和 IP等信息。 后面的 socket 相关的 API 需要使用到这个 socket 地址。 //客户端 --> 服务器(IP 、 Port) 通用 socket 地址: socket 网络编程接口中表示 socket 地址是结构体 阅读全文

posted @ 2023-10-11 20:15 廿陆 阅读(67) 评论(0) 推荐(0) 编辑

linux IP 地址转换
摘要:IP地址转换(字符串ip - 整数,主机字节序和网络字节序的转换): 通常,人们习惯用可读性好的字符串来表示 IP 地址,比如用 点分十进制 字符串表示 IPv4 地址,以及用 十六进制 字符串表示 IPv6 地址。 但编程中我们需要把它们转化为整数(二进制数)方能使用。而记录日志时则相反,我们要把 阅读全文

posted @ 2023-10-11 22:45 廿陆 阅读(255) 评论(0) 推荐(0) 编辑

linux TCP 通信流程 套接字函数 socket() bind() listen() accept() connect()
摘要:TCP 和 UDP -> 传输层的协议 UDP: 用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报(类似战争中无线电的广播),不可靠。 TCP: 传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输(点对点)。 UDP TCP 是否创建连接 无连接 面向连接 是否可靠 不可靠 可 阅读全文

posted @ 2023-10-12 12:22 廿陆 阅读(57) 评论(0) 推荐(0) 编辑

linux TCP通信实现 服务器端 - 客户端
摘要:服务器端: 1 //TCP通信的服务器端 2 3 #include <stdio.h> 4 #include <arpa/inet.h> 5 #include <unistd.h> 6 #include <string.h> 7 int main() 8 { 9 //1.创建 socket(用于监听 阅读全文

posted @ 2023-10-12 21:12 廿陆 阅读(63) 评论(0) 推荐(0) 编辑

linux TCP 三次握手
摘要:TCP三次握手: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的”连接“,其实是 客户端 和 服务器的内存里保存的一份关于对方的信息,如 IP地址,端口号等。 TCP 可以看成是一种字节流,它会处理 IP 层或以下的层的 丢包、重复以及错误问题。在连接的建立 阅读全文

posted @ 2023-10-12 21:57 廿陆 阅读(24) 评论(0) 推荐(0) 编辑

linux TCP滑动窗口 四次挥手
摘要:TCP滑动窗口 滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许 阅读全文

posted @ 2023-10-22 11:20 廿陆 阅读(52) 评论(0) 推荐(0) 编辑

linux 多进程实现并发服务器 多线程并发
摘要:TCP通信并发** 要实现TCP通信服务器处理并发任务,使用多线程或多进程来解决。 思路: 1. 一个父进程,多个子进程 2. 父进程负责等待并接受客户端的连接 3. 完成通信,接受一个客户端连接,就创建一个子进程用于通信。 客户端: 1 //TCP通信的客户端 2 3 #include <stdi 阅读全文

posted @ 2023-10-24 08:54 廿陆 阅读(89) 评论(0) 推荐(0) 编辑

linux TCP状态转换 半关闭 shutdown netstat 端口复用 setsockopt
摘要:TCP状态转换:发生在三次握手四次挥手的过程中 黑色为异常的信息; 红色线为客户端; 绿色虚线为服务器端; 报文段寿命: 2MSL(Maximum Segment Lifetime) 主动断开连接的一方,最后进出入一个 TIME_WAIT状态,这个状态会持续: 2msl msl:官方建议:2分钟,实 阅读全文

posted @ 2023-10-24 11:40 廿陆 阅读(62) 评论(0) 推荐(0) 编辑

linux IO多路复用 select poll epoll
摘要:I/O多路复用(I/O多路转接)*** ***I/O多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能***,Linux下实现的 I/O 多路复用的系统调用主要有 select、poll 和 epoll。 输入指的是程序数据写入到内存中 从内存读取到文件中是输出 I/O指的是对两端(客户端 阅读全文

posted @ 2023-10-25 11:13 廿陆 阅读(23) 评论(0) 推荐(0) 编辑

linux 多路复用---poll
摘要:poll定义: /* #include <poll.h> struct pollfd { int fd; //委托内核检测的文件描述符 short events; //委托内核检测文件描述符的什么事件 short revents; //文件描述符实际发生的事件(返回的事件) }; //struct 阅读全文

posted @ 2023-10-30 16:59 廿陆 阅读(37) 评论(0) 推荐(0) 编辑

linux 多路复用---epoll
摘要:rbr(红黑树):需要检测的文件描述符 rdlist:有数据传递的文件描述符 epoll API: /* #include <sys/epoll.h> //创建一个新的 epoll 实例,在内核中创建了一个数据,这个数据中有两个比较重要的数据, 一个是需要检测的文件描述符的信息(红黑树),还有一个是 阅读全文

posted @ 2023-10-31 11:02 廿陆 阅读(57) 评论(0) 推荐(0) 编辑

linux UDP 通信
摘要:UDP: #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_add 阅读全文

posted @ 2023-11-03 09:51 廿陆 阅读(22) 评论(0) 推荐(0) 编辑

linux 本地套接字通信
摘要:本地套接字的作用:本地的进程间通信 有关系的进程间通信 没有关系的进程间的通信 本地套接字实现流程与网络套接字类似,一般采用 TCP 通信流程 本地套接字通信流程: //服务器端 //1.创建监听的套接字 int lfd = socket(AF_UNIX/AF_LOCAL, SOCK_STREAM, 阅读全文

posted @ 2023-11-03 16:22 廿陆 阅读(60) 评论(0) 推荐(0) 编辑

linux Web服务器以及HTTP协议
摘要:Web Server(网页服务器): 一个Web Server就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过 HTTP 协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自客户端的HTTP请求,并对其请求做出 HTTP 响应,返回给客 阅读全文

posted @ 2023-11-08 18:13 廿陆 阅读(127) 评论(0) 推荐(0) 编辑

linux 服务器编程基本框架和两种高效事件的处理模式
摘要:服务器编程基本框架 虽然服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。 I/O 处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接,接收客户数据,将服务器响应数据返回给客户端。但是数据的收发不一定在 I/O 处理单元中执行,也可能在逻辑单元中执行,具体在 阅读全文

posted @ 2023-11-10 17:26 廿陆 阅读(30) 评论(0) 推荐(0) 编辑

linux 线程池 EPOLLONESHOT事件
摘要:线程池: 线程池是由服务器预先创建的一组子线程,线程池中的线程数量应该和 CPU 数量差不多。线程池中的所有子线程都运行着相同的代码。当有新的任务到来时,主线程将通过某种方式选择线程池中的某一个子线程来为之服务。相比与动态的创建子线程,选择一个已经存在的子线程的代价显然要小得多。至于主线程选择哪个子 阅读全文

posted @ 2023-11-13 10:08 廿陆 阅读(142) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示