计算机网络
文章平均质量分 92
xiaoju233
Talk is cheap, show me the code.
展开
-
TCP相关知识点
TCP多路分解和多路复用将运输层报文段中的数据交付到正确的套接字的工作成为多路分解。在源主机从不同的套接字中收集数据块,并为每个数据块封装上首部信息(这将在以后用于分解)从而生成报文段,然后将报文段传递到网络层,所有这些工作称为多路复用。可靠数据传输原理停-等协议回退N步协议基序号base定义为最早的未确认分组的序号,将下一个序号nextseq定义为最小的未使用序号(即下一个待发分组的序号),则可将序号范围分割成4段。在[0, base-1]段内的序号对应于已经发送并被确认的分组。[base,原创 2021-07-15 11:32:14 · 414 阅读 · 0 评论 -
Linux服务器框架设计思路
Linux服务器框架设计思路关键词:进程池、线程池、协程、IO多路复用多进程(进程池)主进程侦听socket,将客户端socket分配给子进程去处理。这样编程简单,可能需要用到进程间的通信,但进程开销很大,并发量非常小。多线程(线程池)主线程侦听socket,将客户端socket分配给每一个线程去处理。这样编程较简单,但线程的创建和切换同样开销较大,并发量较小。无论是进程池还是线程池,其作用都是为了减少进程/线程频繁创建和回收带来的性能损失,本质上依然是一个CPU指向单元在请求的生命周期内,只能原创 2020-09-11 22:52:11 · 342 阅读 · 0 评论 -
python爬虫爬取微博知乎热搜榜
python爬虫爬取微博知乎热搜榜使用python编写脚本爬取微博和知乎的热搜榜单,原理非常简单,构造http协议get请求(注意:get请求头部中需要包含cookie,否则无法获取到热搜数据,可以先使用浏览器访问,从开发者工具中找到对应cookie,并记录下来,以后一直使用这个cookie即可),再使用request工具包发送get请求,使用lxml工具解析返回的html,从中找出我们想要的数据即可。请求连接微博:https://weibo.com/a/hot/realtime知乎:https:/原创 2020-06-12 13:05:36 · 1737 阅读 · 1 评论 -
基本TCP套接字编程
基本TCP套接字编程下图是TCP套接字客服/服务器程序的流程图:socket函数#include<sys/socket.h>int socket(int family, int type, int protocol);socket函数创建一个socket文件描述符。参数说明:family:指明协议族,为以下值之一:family说明AF_IN...原创 2020-03-21 11:11:20 · 247 阅读 · 0 评论 -
Unix套接字高级IO函数
Unix套接字高级IO函数recv函数#include<sys/socket.h>ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);recv函数的作用类似于标准IO库中的read函数,不过需要多加一个额外的参数。参数说明:sockfd:指定接收端套接字文件描述符buf:指定接收缓冲区的指针n...原创 2020-03-19 10:00:36 · 112 阅读 · 0 评论 -
Linux系统IO多路复用之epoll
Linux系统IO多路复用之epollepoll_create函数int epoll_create(int size); 创建一个epoll的句柄,size指定需要监听描述符的最大数量。该函数返回一个fd,在使用完epoll之后需要调用close()关闭,否则可能导致fd耗尽。epoll_ctl函数int epoll_ctl(int epfd, int op, int fd, str...原创 2020-03-17 23:14:20 · 131 阅读 · 0 评论 -
Linux系统IO多路复用之select
Linux系统IO多路复用之select#include<sys/select.h>#include<sys/time.h>int select(int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset, const struct timeval *timeout);参数介绍:maxfd:最...原创 2020-03-16 23:42:35 · 122 阅读 · 0 评论 -
Linux系统IO多路复用
Linux系统IO多路复用IO多路复用本质上是通过一种机制,让单个进程可以监视多个文件描述符,一旦某个文件描述符就绪,就通知进程进行相应的读写操作。当一个TCP服务器程序需要同时服务于多个客户时(即保持多条与客户端的TCP连接),这里可以采用多种方式处理多个Socket:若采用阻塞方式读写Socket,则会导致其它客户无法得到及时的服务。可以考虑使用多线程的方式,为每一个Socket分配一...原创 2020-03-16 16:56:01 · 503 阅读 · 0 评论