
linux网络编程
文章平均质量分 71
chenshida_
这个作者很懒,什么都没留下…
展开
-
linux网络编程(四)线程池
linux网络编程(三)线程池为什么会有线程池?实现简单的线程池为什么会有线程池?大多数的服务器可能都有这样一种情况,就是会在单位时间内接收到大量客户端请求,我们可以采取接受到客户端请求创建一个线程的方式来执行,虽然线程对于进程来说开销已经很低了,但是大量的请求,也会占用巨量cpu资源。那么我们能不能采取一种方法来解决这个问题呢。线程池就出现了,假设我们会创建5个空闲线程,我们会将这些任务存入到队列中,当我们有空闲线程时就来处理任务,这样占用巨大cpu资源的情况是不是就能解决了呢。实现简单的线程池#原创 2021-03-14 23:01:32 · 222 阅读 · 0 评论 -
linux网络编程(三)select、poll和epoll
linux网络编程(三)select、poll和epoll一、为什么会有多路I/O转接服务器?二、select1.引入库三、poll三、epoll一、为什么会有多路I/O转接服务器?为什么会有多路I/O转接服务器呢?在学这个之前,我们同使用的是多线程或者多进程的方式来连接服务器,那么cpu将会占用大量资源来处理。那么我们试想一下,如果有几千台客户端来连接呢,那么就要创建几千个进程或者线程。有没有一种不怎么占用cpu资源的方式呢。这时候多路I/O转接服务器的这种机制就很符合这种情况。操作系统会用内核来监听原创 2021-03-07 20:32:02 · 184 阅读 · 0 评论 -
linux网络编程(二)TCP通讯状态
linux网络编程(二)TCP通讯状态TCP状态转换为什么需要等待2MSL?端口复用TCP状态转换tcp协议连接开始会经过三次握手,客户端和服务器开始都会处于CLOSED状态第一次握手:客户端会先发送SYN请求给服务器,客户端处于SYN_SET状态,第二次握手:服务器接收到SYN后,发给客户端ACK回答和SYN请求,服务器从LISTEN变成SYN_RCVD第三次握手:客户端接收到ACK和SYN请求后,发送给服务器ACK回应,客户端从SYN_SET变成ESTABLISHED状态,服务器接收到ACK原创 2021-03-06 00:06:52 · 284 阅读 · 0 评论 -
linux网络编程(二)高并发服务器
linux网络编程(二)高并发服务器错误处理高并发服务器多进程并发服务器客户端错误处理#include "wrap.h"int Bind(int fd, const struct sockaddr* sa, socklen_t salen){ int ret; if ((ret = bind(fd, sa, salen)) < 0) { perror("bind error:"); exit(1); } return ret;}int Accept(int fd原创 2021-02-27 14:55:58 · 157 阅读 · 0 评论 -
linux网络编程(一)网络基础传输知识
linux网络编程(一)网络传输基础知识一、什么是协议?二、使用步骤典型协议2.网络应用程序设计模式C/S模式B/S模式优缺点3.分层模型4.TCP/IP四层模型通信过程5.协议格式数据包封装以太网帧格式ARP数据报格式IP段格式UDP数据报格式TCP数据报格式6.TCP协议三次握手四次握手服务器客户端一、什么是协议?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则.假设,A、B原创 2021-02-27 09:41:14 · 555 阅读 · 0 评论