socket基础

概念

Socket是操作系统提供的通信端点、API接口。Linux下本质是文件描述符fd。

Socket和TCP/HTTP/MQTT关系

http/mqtt:应用层协议,在socket之上,由应用代码组装报文;

Socket:工具,用来收发字节,裸socket可以自己实现协议;

tcp/udp:传输层协议,内核实现。

IP、端口、Socket区别

ip:定位哪台机器

端口:定位机器上哪个进程

socket:ip+端口+对端ip+端口

两种Socket类型

SOCK_STREAM:TCP流式socket,面向连接,字节流,无消息边界

SOCK_DGRAM:UDP数据报socket,无连接,有数据包边界

socket流程

该图取自https://blog.csdn.net/fightsyj/article/details/86251421。

需要注意的是,udp没有accept和listen

Linux系统常用命令

目录操作

pwd                     # pwd print working directory,看当前在哪
mkdir practice          # make directory 创建practice文件夹
cd practice             # change directory,进入practice文件夹
pwd
ls
mkdir a b c             # 一次性创建a、b、c三个文件夹
ls
ls -R                   # recursive递归,把子目录全部列出来
ls -a                   # all,显示隐藏文件(以.开头)
rmdir c                 # remove directory 删除空文件夹c
ls

文件操作

touch 1.txt 2.txt       # touch 创建空文件
ls -l
cat 1.txt               # 查看文件,空文件什么都没有

cp 1.txt bak.txt        # copy复制1.txt为bak.txt
ls -l

mv bak.txt b.txt        # move重命名:bak.txt改名为b.txt
ls

cp -r a a_copy          # 复制文件夹必须加‑r recursive递归
ls

rm 2.txt                # remove删除普通文件
ls
rm -r a_copy            # 删除文件夹需要‑r递归
ls

文件权限

对照输出拆解权限:

  • 644:‑rw‑r‑‑r‑‑
  • 755:‑rwxr‑xr‑x

对比理解:+x只增加执行位;755 强制重写整套权限模式。

二进制记忆:r=4 w=2 x=1。

文本查看命令

# 生成1‑20行测试文本
seq 1 20 > demo.txt

cat demo.txt
cat -s demo.txt         # squeeze压缩多个空行

head -5 demo.txt        # 显示前5行 head
tail -3 demo.txt        # 显示最后3行 tail

管道

# 列出当前目录文件详细权限信息
ls -l

# 管道:把ls‑l输出传给wc‑l,统计输出一共有多少行
ls -l | wc -l

# -e 启用转义\n换行,生成乱序数字写入num.txt(>覆盖文件)
echo -e "5\n2\n9\n1" > num.txt

# 查看num.txt全部内容
cat num.txt

# 管道:读取num.txt输出交给sort,按升序排序
cat num.txt | sort

# sort -r:reverse反向,降序从大到小排序
cat num.txt | sort -r

# grep txt:过滤,只保留包含txt的行
ls -l | grep txt

# 多级管道:先过滤txt文件,再只取前2行
ls -l | grep txt | head -2
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐