C/C++之socket编程
参考文章:
1.socket编程基础知识
2.socket编程UDP程序
3.socket编程TCP程序
4.unix domain socket 编程
5.Unix Domain Socket 实现原理
6.Linux C Socket UDP编程详解及实例分享
7.Linux编程之UDP SOCKET全攻略
8.udp 超时设置(select函数的一种用法)
前言
socket通信本质上就是两个进程间的通信(跨网络的进程间通信)
IP地址能够唯一标识公网内的一台主机,而端口号能够唯一标识一台主机上的一个进程,因此IP地址+端口号就能够唯一标识网络上的某一台主机的某一个进程
或者这样说:IP地址就像是某个快递点的位置,端口号就是其中快递包裹的编号,而进程是收或寄快递的人
TCP协议:面向连接、可靠、基于字节流的传输层通信协议
UDP协议:无需建立连接的、不可靠的、面向数据报的传输层通信协议
计算机存储策略:
大端模式:数据高字节保存到内存低字节,数据低字节保存到内存高字节(大对小,小对大/低地址高字节) -> 网络数据流采用大端模式
小端模式:数据高字 ...
计算机之静态 arp 绑定
参考文章:
在 Windows 上 arp 绑定
arp 绑定网关
linux arp 的操作解释,永久生效的方法
计算机上设置静态arp的方式不止一种,以下只介绍比较常用的两种方式:
方式一:arp -s绑定,但是只能实现临时静态arp绑定,系统重启后失效 (绑定静态arp后,使用命令arp -a查看,对应绑定的静态arp会有PERM标识,表示静态arp,即permanent,永久的)注意:arp -s绑定的mac地址在windows系统上使用-分隔,而在linux系统上使用:分隔
方式二:netsh绑定,可实现永久arp绑定,系统重启后也不会失效,且能指定网络接口
1. arp -s 方式 (windows 和 linux 系统均可使用)
查看系统的arp表
1$ arp -a
绑定静态arp
123$ arp -s ip mac # 第一个参数为点十分进制 ip 地址,第二个参数为需要绑定的 mac 地址$ arp -s 192.168.1.81 11-22-33-44-55-66 # Windows绑定示例$ arp -s 192.168.1.81 1 ...
linux 系统设置开机自启脚本方式
linux 系统开机自启动脚本执行
参考:Run a Script on Startup in Linux
一、crontab
Linux 定时任务 crontab 实现秒级定时以及@reboot 的一些问题如何查看 crontab 的日志记录Running a script during booting/startup; init.d vs cron @reboot
使用crontab -e命令编辑 crontab 文件,添加如下内容:
1@reboot /bin/bash SCRIPT_PATH
系统重启后会自动执行脚本
注意:
可能得使用 root 权限才能正常自启动执行
假如说执行脚本中有重定向到某个文件或终端的情况
重定向到文件:可能得需要程序执行完才能看到重定向到文件的内容
重定向到终端:这得需要执行脚本的时候存在该终端,否则可能会因为打不开终端而导致执行失败
关于 crontab
可以执行任何命令或脚本
任何用户都可以添加,不只局限于 root 用户
on a Debian system with systemd: cron’s @reb ...
ZYNQ学习笔记
ZYNQ开发板和电脑网络连接
注:这里是不使用路由器而只采用ZYNQ开发板、电脑和虚拟机的网络连接记录
1.ZYNQ开发板和电脑以太网连接
开发板使用网线连接电脑以太网后,给电脑以太网口手动配置ip为192.168.1.100/24,然后在开发板Linux系统上使用命令ifconfig eth0 192.168.1.27将网口0(实际上是ETH1)的ip地址设置为192.168.1.27/24。
一般这样配置好ip地址后应该能互相ping通,但是可能由于防火墙的问题导致不能ping通,此时就需要关闭windows电脑和开发板的防火墙,然后应该就能ping通了
2.ZYNQ开发板和虚拟机连接
如果虚拟机网络配置选择net模式的话,一般是虚拟机能ping通开发板但是开发板或电脑都不能ping通虚拟机
此时需要修改虚拟机网络配置为桥接模式,并手动配置虚拟机网络ip地址与电脑以太网同一网段,例如192.168.1.30/24,此时应该开发板和虚拟机都能互相ping通
Linux删除路由:sudo route del -net 192.168.1.0 netmask 255.255.255 ...
Vscode调试笔记
Vscode配置调试文件及其参数含义的笔记,这里以Linux下的C/C++调试环境为例进行说明
一、调试文件的配置在vscode中,通过配置launch.json文件进行调试。在侧边栏的调试(像虫子一样)中,如果没有配置就会显示如下类似的界面:
这时可以直接点击运行和调试,也可以点击**创建 launch.json 文件**,然后会提示选择调试环境,Linux类系统选择C++(GDB/LLDB),Windows系统选择C++(Windows),选择C++(GDB/LLDB)后,会提示选择配置(若没有这一步则会直接生成一个空的launch.json),此时选择gcc - 生成和调试活动文件,就会在项目根目录的.vscode内创建launch.json和task.json共两个文件;
个人理解是:launch,json文件是用来配置目标程序调试相关的参数,task.json是用来指定某个task如何编译当前的项目。
1.launch.json内容123456789101112131415161718{ "version": "0.2. ...
搜索引擎的搜索技巧
整理记录一下搜索引擎的搜索技巧,方便以后使用。
1.完全匹配搜索
把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配
百度和Google都支持这个指令,例如搜索: "方法图片"
2.搜索范围限定在URL
inurl: 用于搜索查询词出现在url 中的页面
百度和Google都支持inurl指令。inurl支持中文和英文。 比如搜索:inurl:搜索引擎优化,返回的结果都是网址中包含“搜索引擎优化”的页面。由于关键词出现在url中对排名有一定影响,使用inurl搜索可以更准确地找到竞争对手。
3.搜索范围限定在标题
intitle: 指令返回的是页面title中包含关键词的页面
百度和Google都支持intitle指令。 使用intitle指令找到的是更准确的竞争页面。如果关键词只出现在页面可见文字中,而没有出现在title中,大部分情况是并没有针对关键词进行优化,所以也不是有力的竞争对手。
4.搜索范围限定在指定网站
在查询词后输入 site:网站名,网站名就是你要 ...
C++常用语法学习笔记
这篇笔记是跟着菜鸟教程C++的复习笔记(不全面)
一、C++基础复习
这里只列出不熟悉的(或者是C中没有的语法)
1.三字符组
三字符组就是用于表示另一个字符的三个字符序列,又称为三字符序列。三字符序列总是以两个问号开头(现在很少使用)
三字符组
替换
??=
#
??/
\
??’
^
??(
[
??)
]
??!
|
??<
{
??>
}
??-
~
2.类型转换
静态转换:强制转换为另外一种数据类型(不进行任何运行时类型检查)
12int i = 10;float f = static_cast<float>(i);//静态
动态转换:通常用于将一个基类指针或引用转换为派生类指针或引用。动态转换在运行时进行类型检查,如果不能进行转换则返回空指针或引发异常
1234class Base {};class Derived : public Base {};Base * ptr_base = new Derived;Derived* p ...
莫斯密码笔记
26字母和10个数字的莫斯密码笔记
字母
莫斯密码
字母
莫斯密码
A
.-
B
-...
C
-.-.
D
-..
E
.
F
..-.
G
--.
H
....
I
..
J
.---
K
-.-
L
.-..
M
--
N
-.
O
---
P
.--.
Q
--.-
R
.-.
S
...
T
-
U
..-
V
...-
W
.--
X
-..-
Y
-.--
Z
--..
数字
莫斯密码
数字
莫斯密码
0
-----
1
.----
2
..---
3
...--
4
....-
5
.....
6
-....
7
--...
8
---..
9
----.
SOS: .../---/...
HELLO WORLD: ...././.-../.-../---/.--/---/.-./.-../-..
git使用简要教程
本篇文章来源于《GitHub入门与实践》第4章 通过实际操作学习Git
1、基本操作
git init – 初始化仓库
初始化成功后该目录下会生成.git目录(也称为附属于该仓库的工作树),储存管理当前目录内容所需的仓库数据
文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开
123G3@DESKTOP-OM3KFRO MINGW64 ~/Desktop/git test$ git initInitialized empty Git repository in C:/Users/G3/Desktop/git test/.git/
git status –查看仓库的状态
工作树和仓库在被操作的过程中,状态会不断发生变化
1234567G3@DESKTOP-OM3KFRO MINGW64 ~/Desktop/git test (master)$ git statusOn branch masterNo commits yetnothing to commit (create ...
Linux后台运行程序命令
Linux/Unix下,通常只有守护进程可在脱离终端的情况下能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出。当终端退出后,由该终端启动的后台程序自动退出,像xshell等软件使用ssh协议进行远程连接时,实质上还是相当于在远程服务器上的终端,因此运行的普通进程会在退出终端时(包括xshell等软件)自动退出,但是可以使用一些方法来使进程后台运行(已运行的进程在退出终端后仍能继续运行)
这里介绍nohup、&和screen三种方式
&命令
&的作用是让程序在当前终端继续运行而终端可以接着执行其他命令,即在当前终端未被关闭的情况下在后台运行
ctrl z 挂起进程并放入后台ctrl c 结束进程jobs 显示当前暂停的进程bg %N 使第N个任务在后台运行(%前有空格)fg %N 使第N个任务在前台运行
nohup命令
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
该命令在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果 ...