c语言之Linux网络开发

一、网络编程预备知识 socket IP地址 端口号 字节序 (一)socket 是一个编程接口 是一种特殊的文件描述符 (everything in Unix is a file) 并不仅限于TCP/IP协议 面向连接 (Transmission Control Protocol - TCP/IP) 无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX) (二)socket类型 1、流式套接字(SOCK_STREAM) 提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 2、数据报套接字(SOCK_DGRAM) 提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 3、原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。 (三)socket的位置 (四)IP地址 IP地址是Internet中主机的标识: Internet中的主机要与别的机器通信必须具有一个IP地址 IP地址为32位(IPv4)或者128位(IPv6) 每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由 表示形式:常用点分形式,如202.38.64.10,最后都会转换为一个32位的无符号整数 (五)端口号 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别 TCP端口号与UDP端口号独立 端口号一般由IANA (Internet Assigned Numbers Authority) 管理 众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX系统占用) 注册端口:1024~49150 动态或私有端口:49151~65535 (六)字节序 不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO): 小端序(little-endian) - 低序字节存储在低地址 将低字节存储在起始地址,称为“Little-Endi...

FastAPI后端篇之项目搭建

 一、环境搭建

       在之前的博文中 Python本地虚拟环境搭建及Pycharm配置讲述过虚拟环境搭建的过程,这里不再赘述,直接使用即可。
  • 查看虚拟环境
conda info --env
  • 创建虚拟环境
conda create -n FullStackEnv python=3.8.5
  • 激活虚拟环境 
conda activate FullStackEnv pip list
  • 安装FastAPI
pip install fastapi==0.65.1
二、创建后台项目
  • 新建full-stack-backend项目
新建目录full-stack-backend,然后使用IDE打开即可:


       接着需要在该目录中新建一些目录,不同的目录有不同的功能,此时需要新建alembic和app文件夹,alemic文件夹主要用于数据库的迁移版本管理,类似于Django中migrations,而app文件夹主要就是业务功能开发的内容,因为后台项目没有那么复杂,所以目录结构无需设计的过于复杂。
然后在各个目录中新建对应的.py文件:
├─FullStackEnv_1 │ │ alembic.ini 数据库地址配置 │ │ requirements.txt 依赖包导出 │ │ __init__.py │ │ │ ├─alembic │ │ │ env.py 与ORM进行关联配置 │ │ ├─app │ crud.py 数据库操作相关 │ database.py sqlalchemy相关配置 │ dependencies.py FastAPI框架依赖项 │ main.py │ models.py 数据库模型表 │ schemas.py Pydantic数据校验模型 │ __init__.py
项目的大概架子搭好了,接着就是将虚拟环境配置到该项目上。


  • 安装依赖
将项目中需要的依赖包进行安装,也就是requirements.txt文件中的依赖包:
pip install -r requirements.txt
  • requirements.txt
alembic==1.6.5 certifi==2021.5.30 click==7.1.2 dnspython==2.1.0 email-validator==1.1.3 fastapi==0.65.1 greenlet==1.1.0 h11==0.12.0 idna==3.2 Mako==1.1.4 MarkupSafe==2.0.1 pydantic==1.8.2 PyMySQL==1.0.2 python-dateutil==2.8.2 python-editor==1.0.4 six==1.16.0 SQLAlchemy==1.4.18 starlette==0.14.2 typing-extensions==3.10.0.0 uvicorn==0.13.4 wincertstore==0.2
三、项目启动测试

       这里我们可以进行一下简单的测试,查看项目是否能够完好的启动,需要使用uvicorn来启动服务,uvicorn类似于Django框架自带的内置服务器,uvicorn是一个异步ASGI服务器,
基于uvloop和httptools构建。
在main.py文件中写入如下的代码:
from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/") async def home(): return {"username": "zhangsan"} if __name__ == '__main__': uvicorn.run(app=app, host="127.0.0.1", port=8088)
然后在浏览器中进行访问 http://127.0.0.1:8088/docs交互式文档。



更多文章合集前往: 往期精彩文章

此博客中的热门博文

玩转虚拟机系列之如何搭建虚拟机

玩转虚拟机系列之远程工具

玩转虚拟机系列之如何高效创建虚拟机