当前位置: 首页 > news >正文

Python套接字

1、网络协议

  TCP / IP 是设备用于在 Internet 和大多数本地网络上进行通信的一组协议。 TCP 更可靠,具有大量错误检查并需要更多资源。 HTTP,SMTP 或 FTP 等服务使用它。 UDP 的可靠性要差得多,错误检查的能力也有限,所需资源也更少。 VoIP 等服务使用它。

  socket.SOCK_STREAM用于为 TCP 创建套接字,而socket.SOCK_DGRAM为 UDP 创建套接字。

2、地址族

  创建套接字时,必须指定其地址族,在套接字中使用该类型。

  • AF_UNIX,AF_LOCAL-本地通讯
  • AF_INET-IPv4 Internet 协议
  • AF_INET6-IPv6 Internet 协议
  • AF_IPX-IPX-Novell 协议
  • AF_BLUETOOTH-无线蓝牙协议
  • AF_PACKET-底层数据包接口

  对于AF_INET地址族,指定了一对(主机,端口)。 host是一个字符串,表示互联网域表示法中的主机名(如example.com)或 IPv4 地址(如93.184.216.34),并且 port 是整数。

4、通过域名获取IP地址
import socket
ip = socket.gethostbyname("geek-docs.com")
print(ip)

5、socket
TCP ipv4
import socket
# 创建用于IPV4的TCP套接字
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:# 工作时间服务器的主机名和端口host = "time.nist.gov"port = 13# 连接到远程套接字s.connect((host, port))# 将数据发送到套接字。套接字必须连接到远程套接字。从字节发送数据,直到发送完所有数据或发生错误为止s.sendall(b'')print(str(s.recv(4096), 'utf-8'))HEAD请求:HEAD 请求是没有消息正文的 GET 请求。 请求/响应的标头包含元数据,例如 HTTP 协议版本或内容类型。
import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.connect(("webcode.me", 80))s.sendall(b"HEAD / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\n\r\n")print(str(s.recv(1024), 'utf-8'))GET 请求:请求指定资源的表示形式。 使用 GET 的请求应仅检索数据
import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.connect(("webcode.me", 80))# 对于 HTTP 1.1 协议,默认情况下,连接可以是持久的。 这就是为什么我们发送Connection: close标头的原因。s.sendall(b"GET / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\nConnection: close\r\n\r\n")while True:data = s.recv(1024)if not data:breakprint(data.decode())回显客户端服务器示例import socket
import timewith socket.socket() as s:host = 'localhost'port = 8001s.bind((host, port))print(f'socket binded to {port}')s.listen()con, addr = s.accept()with con:while True:data = con.recv(1024)if not data:breakcon.sendall(data)异步服务器
import asyncioasync def handle_client(reader, writer):data = (await reader.read(1024))writer.write(data)writer.close()loop = asyncio.get_event_loop()
loop.create_task(asyncio.start_server(handle_client, 'localhost', 8001))
loop.run_forever()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
  • 一些线上常用排查问题的命令
  • 深度学习之概率论预备知识点(3)
  • CVE-2024-46103
  • 深度学习02-pytorch-08-自动微分模块
  • Qt/C++开发经验
  • vue2使用npm引入依赖(例如axios),报错Module parse failed: Unexpected token解决方案
  • 【零散技术】Odoo17通过Controller下载PDF
  • js-利用创建a便签实现下载文件功能
  • AUTOSAR_EXP_ARAComAPI的5章笔记(9)
  • C语言数组学习
  • 语言的条件语句
  • 住宅HTTP代理:提升网络隐私与安全的新选择
  • 角色权限管理实现学习
  • 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树
  • 【译】JS基础算法脚本:字符串结尾
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • conda常用的命令
  • Create React App 使用
  • Laravel 中的一个后期静态绑定
  • Linux快速复制或删除大量小文件
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • OSS Web直传 (文件图片)
  • passportjs 源码分析
  • React Native移动开发实战-3-实现页面间的数据传递
  • Solarized Scheme
  • Spark学习笔记之相关记录
  • SpingCloudBus整合RabbitMQ
  • vue.js框架原理浅析
  • 程序员最讨厌的9句话,你可有补充?
  • 近期前端发展计划
  • 每天一个设计模式之命令模式
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 算法-插入排序
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 在Unity中实现一个简单的消息管理器
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #QT(一种朴素的计算器实现方法)
  • #QT(智能家居界面-界面切换)
  • #每天一道面试题# 什么是MySQL的回表查询
  • (2)STL算法之元素计数
  • (done) 两个矩阵 “相似” 是什么意思?
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (六)软件测试分工
  • (四)Linux Shell编程——输入输出重定向
  • (转)http协议
  • .Net Core中的内存缓存实现——Redis及MemoryCache(2个可选)方案的实现
  • .NET 材料检测系统崩溃分析
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)