【项目】web服务器

socket 套接字:所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象,一个套接字就是网络上进程通信的一端,是应用程序通过网络协议进行通信的接口。socket 可以看成是两个网络应用程序进行通信时,各自通信连接中逻辑上的端点,是网络环境中进程间通信的一套 API。

字节序,就是大于一个字节类型的数据在内存中的存放顺序。

大端字节序是指一个整数的最高位字节存储在内存的低地址处,低位字节存储在内存的高地址处;

小端字节序则是指整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。

小端:0x01 02 03 04, 内存地址增长方向: >> 04 03 02 01

网络字节顺序是 TCP/IP 中规定好的一种数据表示格式,采用大端排序方式。

c 复制代码
//	socket提供

#include <arpa/inet.h>
// 转端口
uint16_t htons(uint16_t hostshort); // 主机字节序 - 网络字节序
uint16_t ntohs(uint16_t netshort); // 主机字节序 - 网络字节序
// 转IP
uint32_t htonl(uint32_t hostlong); // 主机字节序 - 网络字节序
uint32_t ntohl(uint32_t netlong); // 主机字节序 - 网络字节序

TCP通信流程

c 复制代码
// TCP 通信的流程
// 服务器端 (被动接受连接的角色)
1. 创建一个用于监听的套接字
- 监听:监听有客户端的连接
- 套接字:这个套接字其实就是一个文件描述符
2. 将这个监听文件描述符和本地的IP和端口绑定(IP和端口就是服务器的地址信息)
- 客户端连接服务器的时候使用的就是这个IP和端口
3. 设置监听,监听的fd开始工作
4. 阻塞等待,当有客户端发起连接,解除阻塞,接受客户端的连接,会得到一个和客户端通信的套接字
(fd)
5. 通信
- 接收数据
- 发送数据
6. 通信结束,断开连接

// 客户端
1. 创建一个用于通信的套接字(fd)
2. 连接服务器,需要指定连接的服务器的 IP 和 端口
3. 连接成功了,客户端可以直接和服务器通信
- 接收数据
- 发送数据
4. 通信结束,断开连接
相关推荐
bigdata-rookie几秒前
Starrocks 数据模型
java·前端·javascript
白帽子凯哥哥2 分钟前
网络安全Web基础完全指南:从小白到入门安全测试
前端·sql·web安全·信息安全·渗透测试·漏洞
RFCEO8 分钟前
前端编程 课程十四、:CSS核心基础2:选择器优先级 + 伪类选择器(解决冲突+交互效果)
前端·css·交互·css选择器优先级判断规则详解·css important使用·css链接伪类lvha顺序·实现悬浮交互效果
蜡笔小炘8 分钟前
LVS -- 部署NAT模式集群案例
linux·运维·服务器·lvs
翼龙云_cloud9 分钟前
阿里云渠道商:如何优化阿里云弹性伸缩的性能?
服务器·阿里云·云计算
web打印社区10 分钟前
前端实现浏览器预览打印:从原生方案到专业工具
前端·javascript·vue.js·electron
catchadmin13 分钟前
PHP 现在可以零成本构建原生 iOS 和 Android 应用 NativePHP for Mobile v3 发布
android·ios·php
冰冰的coco14 分钟前
如何设置需要sudo的命令开机自启动
linux·运维·服务器
辞旧 lekkk16 分钟前
【Linux】Linux进程控制(三)自主实现简易shell命令行解释器
linux·运维·服务器·学习·萌新
徐同保24 分钟前
vue.config.ts配置代理解决跨域,配置开发环境开启source-map
前端·javascript·vue.js