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

Python--网络编程

3. 网络编程与Socket

3.1 Socket基础

创建Socket
import socket# TCP Socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# UDP Socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
服务器端函数
函数描述
​bind((host, port))​绑定地址和端口
​listen(backlog)​开始监听传入连接
​accept()​接受连接,返回新Socket和客户端地址
客户端函数
函数描述
​connect((host, port))​连接到服务器
​send(data)​发送数据(TCP)
​sendto(data, address)​发送数据(UDP)

3.2 高级Socket功能

超时与异常处理
import sockets = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)  # 设置超时为5秒
try:s.connect(("example.com", 80))
except socket.timeout:print("连接超时!")
except socket.error as e:print(f"连接错误: {e}")
finally:s.close()
多线程Socket服务器
import socket
import threadingdef handle_client(conn, addr):print(f"客户端 {addr} 已连接")data = conn.recv(1024)conn.send(b"Server: Received")conn.close()server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("0.0.0.0", 8080))
server.listen(5)while True:conn, addr = server.accept()thread = threading.Thread(target=handle_client, args=(conn, addr))thread.start()
实现简单HTTP请求
# 发送HTTP GET请求
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("example.com", 80))
s.send(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
response = s.recv(4096)
print(response.decode())
s.close()

3.3 TCP通信示例

服务器端:

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(("0.0.0.0", 8080))
server_socket.listen(5)
conn, addr = server_socket.accept()
data = conn.recv(1024)
conn.send(b"Received")
conn.close()

客户端:

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(("127.0.0.1", 8080))
client_socket.send(b"Hello Server")
response = client_socket.recv(1024)
client_socket.close()

3.4 UDP通信示例

服务器端:

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("0.0.0.0", 9090))
data, addr = udp_socket.recvfrom(1024)
udp_socket.sendto(b"ACK", addr)

客户端:

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.sendto(b"Hello", ("127.0.0.1", 9090))
response, addr = udp_socket.recvfrom(1024)

3.5 端口扫描与主机探测

使用 python-nmap​ 库进行端口扫描:

import nmapscanner = nmap.PortScanner()
scanner.scan("192.168.1.1", "1-1024", "-sS")  # SYN扫描
print(scanner.all_hosts())
print(scanner["192.168.1.1"].all_tcp())

4. 工具与资源

  • 正则表达式在线测试工具:https://regex101.com

  • 网络调试工具:Wireshark、Postman、tcpdump

  • Python库

    • python-nmap​:pip install python-nmap​

    • requests​:HTTP请求库

    • scapy:构造和解析网络数据包。

      pip install scapy
      
    • asyncio:实现异步网络编程。

      import asyncioasync def tcp_echo_client(message):reader, writer = await asyncio.open_connection("127.0.0.1", 8888)writer.write(message.encode())data = await reader.read(100)print(f"Received: {data.decode()}")writer.close()asyncio.run(tcp_echo_client("Hello Server"))
      

相关文章:

Python--网络编程

3. 网络编程与Socket 3.1 Socket基础 创建Socket import socket# TCP Socket tcp_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# UDP Socket udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)服务器端函数 函数描述​bind((host, port))​绑定…...

【java】方法的基本内存原理(栈和堆)

java内存主要分为栈和堆,方法相关的部分主要在栈内存里,每个方法调用时会在栈里创建一个栈帧,存放局部变量和方法执行的信息。执行完后栈帧被销毁,局部变量消失。而对象实例存在堆里,由垃圾回收器管理。 **Java方法内…...

SQLMesh 系列教程4- 详解模型特点及模型类型

SQLMesh 作为一款强大的数据建模工具,以其灵活的模型设计和高效的增量处理能力脱颖而出。本文将详细介绍 SQLMesh 模型的特点和类型,帮助读者快速了解其强大功能。我们将深入探讨不同模型类型(如增量模型、全量模型、SCD Type 2 等&#xff0…...

SpringBoot(接受参数相关注解)

文章目录 1.基本介绍2.PathVariable 路径参数获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 3.RequestHeader 请求头获取信息 1.代码实例 1.index.html2.ParameterController.java3.测试 2.细节说明 4.RequestParameter 请求获取参数信息 1.…...

hbase合并队列超长问题分析

问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...

FPGA的星辰大海

编者按 时下风头正盛的DeepSeek,正值喜好宏大叙事的米国大统领二次上岗就业,OpenAI、软银、甲骨文等宣布投资高达5000亿美元“星际之门”之际,对比尤为强烈。 某种程度上,,是低成本创新理念的直接落地。 包括来自开源社区的诸多赞誉是,并非体现技术有多“超越”,而是…...

认识vue-admin

认识vue-admin **核心交付:** 为什么要基于现成架子二次开发 什么是二次开发:基于已有的代码(项目工程,脚手架)开进行新功能的开发 所以看懂已有的框架中的既有代码,变得很重要了 1. 背景知识 后台管理系统是一种最…...

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…...

spring boot 对接aws 的S3 服务,实现上传和查询

1.aws S3介绍 AWS S3(Amazon Simple Storage Service)是亚马逊提供的一种对象存储服务,旨在提供可扩展、高可用性和安全的数据存储解决方案。以下是AWS S3的一些主要特点和功能: 1.1. 对象存储 对象存储模型:S3使用…...

PH热榜 | 2025-02-12

1. FirstHR 2.0 with HR Copilot 标语:小型企业的一站式人力资源平台 介绍:对小型企业来说,FirstHR是一个人力资源平台,专注于招聘和团队发展,并融合了一点人工智能技术。 产品网站: 立即访问 Product …...

通过例子学 rust 个人精简版 1-1

1-1 Hello World fn main() {println!("Hello World!");// 动手试一试println!("Im a Rustacean!"); }Hello World! Im a Rustacean!要点1 :println 自带换行符 注释 fn main() {let x 5 /* 90 */ 5;println!("Is x 10 or 100? x …...

HTTP的前世今生:如何塑造现代互联网的交互方式?

一、关于HTTP 1.1 简介 “没有HTTP协议,就没有今天的互联网。” 从简单的文本传输到支撑全球数十亿设备的实时交互,HTTP协议始终是Web世界的核心纽带。本文将深入剖析其设计思想、演进历程及底层工作原理。 HTTP(HyperText Transfer Protoco…...

Flutter_学习记录_动画的简单了解

用AnimationController简单实现如下的效果图&#xff1a; 1. 只用AnimationController实现简单动画 1.1 完整代码案例 import package:flutter/material.dart;class AnimationDemo extends StatefulWidget {const AnimationDemo({super.key});overrideState<AnimationDe…...

【java】for (int num : numbers) { System.out.print(num + “ “); } for里的是什么意思

for (int num : numbers) 是 Java 中的一种 增强型 for 循环&#xff08;也称为 for-each 循环&#xff09;。它的作用是遍历数组或集合中的每一个元素&#xff0c;并对每个元素执行循环体中的操作。 1. 增强型 for 循环的语法 java Copy for (元素类型 变量名 : 数组或集合…...

内容中台驱动企业CMS架构优化与高效策略

内容概要 在数字化转型浪潮中&#xff0c;企业内容管理系统&#xff08;CMS&#xff09;正面临从单一内容存储向智能化、协同化方向演进的迫切需求。通过引入内容中台架构&#xff0c;企业能够有效整合元数据管理、版本控制与智能协作能力&#xff0c;从而优化传统CMS的底层逻…...

我用 Cursor 开发了一款个人小记系统

https://note.iiter.cn 项目背景 在日常工作和学习中,我们经常需要快速记录一些想法、收藏一些有用的链接或者保存一些重要的文本、图片内容。虽然市面上已经有很多笔记软件,但我想要一个更轻量、更简单的工具,专注于快速记录和智能检索。于是我开发了这款个人小记系统。 系统…...

百问网(100ask)提供的烧写工具的原理和详解;将自己编译生成的u-boot镜像文件烧写到eMMC中

百问网(100ask)提供的烧写工具的原理 具体的实现原理见链接 http://wiki.100ask.org/100ask_imx6ull_tool 为了防止上面这个链接失效&#xff0c;我还对上面这个链接指向的页面保存成了mhtml文件&#xff0c;这个mhtml文件的百度网盘下载链接&#xff1a; https://pan.baidu.c…...

doris:异步物化视图概述

物化视图作为一种高效的解决方案&#xff0c;兼具了视图的灵活性和物理表的高性能优势。 它能够预先计算并存储查询的结果集&#xff0c;从而在查询请求到达时&#xff0c;直接从已存储的物化视图中快速获取结果&#xff0c;避免了重新执行复杂的查询语句所带来的开销。 使用场…...

图像缩放的双线性插值实现方式

1、双线性插值概念 双线性插值是一种用于在二维网格上进行插值的方法&#xff0c;适用于图像处理、计算机图形学等领域。它通过利用四个邻近点的已知值&#xff0c;估算出任意点的值。双线性插值在两个方向&#xff08;通常是水平和垂直&#xff09;上分别进行线性插值&#x…...

深入剖析 Vue 的响应式原理:构建高效 Web 应用的基石

深入剖析 Vue 的响应式原理&#xff1a;构建高效 Web 应用的基石 在前端开发的广阔天地里&#xff0c;Vue.js 凭借其简洁易用的特性和强大的功能&#xff0c;成为众多开发者的心头好。其中&#xff0c;响应式原理作为 Vue 的核心亮点之一&#xff0c;让数据与视图之间实现了高…...

使用Python快速调用Taotoken实现stm32外设配置代码生成

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Python快速调用Taotoken实现stm32外设配置代码生成 对于stm32开发者而言&#xff0c;编写GPIO、UART、I2C等外设的初始化与配置…...

如何快速实现智慧树自动刷课:终极完整使用指南

如何快速实现智慧树自动刷课&#xff1a;终极完整使用指南 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台枯燥的视频学习而手动点击"下一集&quo…...

Godot ECS框架实战:数据导向设计提升游戏性能与代码组织

1. 项目概述&#xff1a;为什么要在Godot里引入ECS&#xff1f;如果你在Godot里做过稍微复杂点的项目&#xff0c;尤其是那种有成百上千个需要实时更新状态的对象&#xff08;比如RTS的单位、弹幕游戏的子弹、模拟经营里的市民&#xff09;&#xff0c;你大概率会遇到一个头疼的…...

QMCDecode:3分钟解锁QQ音乐加密文件,让音乐自由播放

QMCDecode&#xff1a;3分钟解锁QQ音乐加密文件&#xff0c;让音乐自由播放 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xf…...

解决Claude Code在视频项目中被封号问题转向Taotoken稳定服务

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 解决Claude Code在视频项目中被封号问题转向Taotoken稳定服务 对于依赖Claude Code进行视频脚本编程辅助的开发者而言&#xff0c;…...

基于MCP与Cloudflare Workers构建AI编程助手的长期记忆系统

1. 项目概述 如果你和我一样&#xff0c;每天都要和 Claude、ChatGPT、Cursor 这些 AI 编程助手打交道&#xff0c;那你一定也受够了它们“金鱼般”的记忆力。昨天刚花半小时解释清楚的项目架构&#xff0c;今天再问&#xff0c;它又得从头开始理解&#xff1b;上周踩过的一个…...

【AISMM×传播效能跃迁】:从0到1搭建数据驱动型媒体策略体系(含独家权重分配算法V3.2)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AISMM模型与媒体传播策略 AISMM&#xff08;Attention-Interest-Search-Memory-Mobilization&#xff09;模型是面向智能媒体环境演化出的新型传播动力学框架&#xff0c;它突破了传统AIDA模型的线性局…...

GEBCO_2025_TID类型标识格网数据集

摘要本数据集为 GEBCO_2025 Grid 配套的 TID 类型标识格网&#xff0c;当前文件压缩体积约 90.55 MB&#xff0c;包含 8 个 GeoTIFF 和 2 份配套文档&#xff0c;GeoTIFF 解压后总量约 3560.62 MB。该数据集不直接存储高程或水深&#xff0c;而是用类型编码记录 GEBCO 格网各像…...

别再死记硬背AXI-Lite信号了!用握手协议的逻辑,5分钟理清5大通道

从握手协议视角重构AXI-Lite&#xff1a;用5个逻辑单元破解FPGA总线迷宫 第一次翻开AXI-Lite协议文档的工程师&#xff0c;往往会被密密麻麻的信号列表吓退——AWADDR、WDATA、BRESP、ARREADY...这些看似无序的字母组合&#xff0c;其实隐藏着精妙的系统级设计哲学。与其逐条背…...

Perfetto vs Systrace:全面对比与迁移指南

Perfetto vs Systrace&#xff1a;下一代Android性能分析工具的全景解析 从Systrace到Perfetto的技术演进之路 在Android性能优化领域&#xff0c;系统级追踪工具的选择往往决定了开发者的调试效率。过去十年间&#xff0c;Systrace作为官方标配工具帮助了无数开发者定位UI卡顿…...