- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 2.线程管理
启动线程 使用C++线程库启动线程,可以归结为构造std::thread对象。 void do_some_work();std::thread my_thread(do_some_work); std::thread可以用可调用类型构造,将带有函数调用符类型的实例传入std::thread类中,替换默认的构造函数。 class background_task{public: void operator()() const{ do_something()
2022-04-10 16:59:50
740
转载 C++的链式赋值
a=b=c 与 (a=b)=ca = b = c; // 正常的链式赋值(a = b) = c; // 不正常的链式赋值,但合法 a=b=c, 是把c的值赋给a和b, 也就是说a,b, c相等 (a=b)= c, 是先把b的值赋给a, 然后(a=b)的值返回的是a的变量, 此时值等于b, 然后把c的值赋给a, 也就是说a 和c 相等, 和b无关。...
2022-04-07 09:39:03
895
原创 一个表L 一个表P 包含升序排列的整数 操作PrintLots(L,P)将打印L中那些由P所指定的位置上的元素
打印L中那些由P所指定的位置上的元素
2022-04-04 10:50:05
534
原创 TCP客户/服务器程序示例——POSIX信号处理
SIGCHLD信号就是由内核在任何一个进程终止时发给它的父进程的一个信号。signal函数:#include "unp.h"Sigfunc * signal(int signo,Sigfunc *func){ struct sigactionact oact; act.sa_handler = func; sigemptyset(&act.sa_mask); act.sa_flags = 0; if(signo == SIGALRM){#ifdef SA_INTERRUP
2022-03-22 21:16:16
133
原创 5种I/O模型
1)阻塞I/O在linux中,默认情况下所有的socket都是阻塞的。阻塞型接口是指系统调用(一般是IO接口)不返回调用结果并让当前线程一直阻塞,只有当该系统调用获得结果或者超时出错时才返回。2)非阻塞I/O进程把一个套接字设置成非阻塞是在通知内核:当所请求的I/O操作非得把本进程投入睡才能完成时,不要把本进程投入睡眠,而是返回一个错误。 前三次调用recvfrom时没有数据可返回,因此内核转而立即返回一个EWOULDBLOCK错误。第四次调用recvfrom时已有一个...
2022-01-05 21:06:04
984
原创 TCP客户/服务器程序示例——课后题
为了验证我们在5.13小节声明的关于产生SIGPIPE信号的推断,我们对“TCP回射客户程序”如下修改。编写一个SIGPIPE信号处理函数,它只是显示一条消息便返回。在调用connect之前建立该信号处理函数。把服务器的端口号改为13,即daytime服务器。连接建立后,调用sleep睡眠2秒钟,然后调用write .往套接字中写入若干字节,再sleep2秒钟,往套接字中再write若干字节。 运行该程序,观察它将会发生什么?...
2022-01-05 11:26:48
1290
原创 netstat命令详解
概述最近在学网络编程,用到了netstat命令,觉得非常有用,就把netstat的信息整理一下,以备不时之需。Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。输出信息含义执行netstat后,其输出结果为从整体上看,netstat的输出结果可以分为两个部分:一个是Active.
2021-12-27 08:50:49
31765
原创 套接字编程简介(二)
目录字节排序函数字节操纵函数1. 源于4.2BSD以b开头的一组函数2. 源自ANSI C标准以mem开头的第二组函数地址转换函数inet_aton, inet_addr 和 inet_ntoa 函数inet_pton 和 inet_ntop 函数sock_ntop 和相关函数readn , writen , readline 函数字节排序函数内存中存储着两个字节有两种方法:一种将低序字节存储在起始地址,称为小端字节序,另一种方法是将高序...
2021-12-24 19:52:32
1198
原创 TCP端口号与并发服务器,缓冲区大小限制,TCP/UDP输出机制
TCP端口号与并发服务器并发服务器中主服务器循环通过派生一个子进程来处理每个新的连接。当服务器接收并接受这个客户的连接时,它fork一个自身的副本,让子进程来处理该客户的请求。TCP无法仅仅通过查看目的端口号来分离外来的分节到不同的端点,它必须查看套接字对的所有4个元素才能确定由哪个端点接收某个到达的分节。缓冲区大小及限制影响IP数据报大小的限制有哪些?(1) IPv4数据报的最大大小是65535字节,包括IPv4首部。因为其总长度字段...
2021-12-21 19:42:56
660
原创 端口号及套接字对
端口号逻辑意义上的端口,即TCP /IP协议中的端口,在报头中占2个字节即16位,范围是从0-65535。端口号用来表示和区别网络中的不同应用程序,即不同的进程。端口的分类(1)众所周知的端口 0 ~ 1023,这些端口由IANA分配和控制,明确绑定某些服务协议,不能随便分配。FTP : 21TELNET : 23SMTP : 25DNS : 53TFTP : 69HTTP : 80SNMP : 161SSH :22(2)注册端口 1024 ~ 49...
2021-12-21 16:53:58
1213
原创 TCP连接的建立与终止
TCP连接的建立与终止 1.服务器(通常通过调用socket、bind、listen来完成——“被动连接”)必须准备接受外来的连接。; 2.客户机(通过调用connect)发起“主动打开”。这将会导致客户TCP发送一个SYN(同步)分节——告诉服务器客户机将在该连接中发送的数据的初始序列号。 3.服务器必须确认(ACK)客户机的SYN(同步),同时服务器自己也发送依个SYN(同步)分节——告诉客户机服务器将在同一连接中发送的数据的初始序列号。(服务器在单个分节中发送SYN和对...
2021-12-20 22:45:08
1463
原创 爬虫之 正则表达式
import re# findall:匹配字符串中所有符合正则的内容lst = re.findall(r"\d+","我的电话是:17347912348")print(lst)#finditer:匹配字符串中所有的内容【返回的是迭代器】#从迭代器中拿到内容需要.groupit = re.finditer(r"\d+","我的电话是:17347912348,我的QQ是:2239602082")for i in it: print(i.group())#search 找到一个结.
2021-11-17 17:49:03
93
原创 Python爬虫入门学习
参考2021年最新Python爬虫教程+实战项目案例(最新录制)_哔哩哔哩_bilibili抓取豆瓣电影Top250相关信息练习import reimport requests1. #获取网页url = "https://movie.douban.com/top250"head = { "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, li
2021-11-17 17:33:41
70
原创 python列表、元组、字典练习题
#1 元素分类有如下值集合[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key中,将小于66值保存至第二个key的值中。list = [11,22,33,44,55,66,77,88,99,90]dic = {}first = []second = []for i in list: if i > 66: first.append(i) elif i < 66: seco...
2021-11-08 15:51:39
1336
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人