【Python快速上手(二十六)】- Python3网络编程(下)

目录

  • Python快速上手(二十六)- Python3网络编程(下)
    • Python3 网络编程
      • 4. HTTP 编程
        • 4.1 HTTP 客户端
        • 4.2 HTTP 服务器
      • 5. 网络协议处理
        • 5.1 URL 处理
        • 5.2 FTP 客户端
      • 6. 实际应用案例
        • 6.1 网络爬虫
        • 6.2 聊天程序
      • 7. 总结

Python快速上手(二十六)- Python3网络编程(下)

Python3 网络编程

网络编程是计算机科学的重要组成部分,Python 提供了强大的标准库支持,使得网络编程变得简单而高效。 Python3 中的网络编程,包括基础概念、常用模块、客户端编程、服务器编程、网络协议处理以及实际应用案例。

4. HTTP 编程

HTTP 编程是网络编程中的一个重要部分,Python 提供了 http 模块和第三方库 requests 来简化 HTTP 客户端和服务器编程。

4.1 HTTP 客户端

使用 requests 库可以方便地进行 HTTP 请求。

import requestsdef http_client():url = 'http://httpbin.org/get'response = requests.get(url)print('Response:', response.text)http_client()
4.2 HTTP 服务器

使用 http.server 模块可以快速搭建一个简单的 HTTP 服务器。

from http.server import BaseHTTPRequestHandler, HTTPServerclass SimpleHTTPRequestHandler(BaseHTTPRequestHandler):def do_GET(self):self.send_response(200)self.send_header('Content-type', 'text/html')self.end_headers()self.wfile.write(b'Hello, world!')def run_server():server_address = ('', 8080)httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)print('Server is running on port 8080...')httpd.serve_forever()run_server()

5. 网络协议处理

5.1 URL 处理

Python 提供了 urllib 模块来处理 URL。

from urllib.parse import urlparse, parse_qsurl = 'http://example.com/path?name=John&age=30'
parsed_url = urlparse(url)
print('Scheme:', parsed_url.scheme)
print('Netloc:', parsed_url.netloc)
print('Path:', parsed_url.path)
print('Query:', parsed_url.query)query_params = parse_qs(parsed_url.query)
print('Query parameters:', query_params)
5.2 FTP 客户端

使用 ftplib 模块可以方便地进行 FTP 操作。

from ftplib import FTPdef ftp_client():ftp = FTP('ftp.example.com')ftp.login(user='username', passwd='password')ftp.cwd('/path/to/directory')ftp.retrlines('LIST')ftp.quit()ftp_client()

6. 实际应用案例

6.1 网络爬虫

使用 requests 和 BeautifulSoup 库可以实现简单的网络爬虫。

import requests
from bs4 import BeautifulSoupdef web_crawler():url = 'http://example.com'response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')for link in soup.find_all('a'):print('Link:', link.get('href'))web_crawler()
6.2 聊天程序

以下是一个简单的聊天程序示例,使用 TCP 套接字实现。

服务器端

import socket
import threadingdef handle_client(client_socket):while True:try:message = client_socket.recv(1024).decode('utf-8')if not message:breakprint('Received:', message)client_socket.sendall(f'Echo: {message}'.encode('utf-8'))except:breakclient_socket.close()def chat_server():server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.bind(('localhost', 8080))server_socket.listen(5)print('Server is listening on port 8080...')while True:client_socket, client_address = server_socket.accept()print('Connection from', client_address)threading.Thread(target=handle_client, args=(client_socket,)).start()chat_server()

客户端

import socketdef chat_client():client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client_socket.connect(('localhost', 8080))while True:message = input('You: ')if message.lower() == 'exit':breakclient_socket.sendall(message.encode('utf-8'))response = client_socket.recv(1024).decode('utf-8')print('Server:', response)client_socket.close()chat_client()

7. 总结

Python3 提供了强大的网络编程支持,从低层次的套接字编程到高级的 HTTP 编程,以及处理各种网络协议的模块。在实际应用中,网络编程广泛用于数据传输、网络爬虫、服务器开发等场景。本文详细介绍了 Python3 中网络编程的基础知识、常用模块、客户端和服务器编程、网络协议处理以及一些实际应用案例,希望能帮助读者更好地理解和应用 Python3 进行网络编程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/13584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

岛屿问题刷题

200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int numIslands(char[][] grid) {int n grid.length;//grid行数int m grid[0].length;//grid列数int res 0;for(int r 0;r<n;r){for(int c0;c<m;c){if(grid[r][c]1){dfs(grid,r,c);res…

分布式异步框架celery + Redis 安装配置

引入 这里不对web框架做过多说明&#xff0c;到时候在总结一篇 python的常见web框架 django、flask、tornado、sanic、fastapi..各框架区别 - 内部集成功能的多少 django&#xff0c;内部提供了很多组件。 【相对大】flask、tornado、sanic、fastapi… 本身自己功能很少第…

java集合类详解

目录 1、数组导入&#xff1a; 2、单列集合 List接口 1、ArrayList&#xff1a;数组列表 ArrayList类中的方法 2、LinkedList&#xff1a;链表列表 3、Vector&#xff1a;数组列表 4、list集合的遍历 1、for循环遍历 2、增强for循环 3、迭代器遍历 Set接口 1、Has…

data studio连接到虚拟机上的openGauss

参考&#xff1a;使用DataStudio连接本地虚拟机中的opengauss数据库_big data_白日梦想家_胖七七-华为云开发者联盟 本实验虚拟机安装的是CentOS7 数据库版本是&#xff1a;openGauss-5.0.2-CentOS-64bit-all.tar.gz 1.配置pg_hba.conf 首先使用su - omm登录到omm用户&…

MySQL数据库,创建表及其插入数据和查询数据

首先&#xff0c;由上图创建表 mysql> create table worker( -> dept_id int(11) not null, -> emp_id int (11) not null, -> work_time date not null, -> salary float(8,2) not null, -> poli_face varchar(10) not null default 群众, -> name…

vue中引入js脚本块或者js文件 js函数 js方法

一、vue中&#xff0c;使用js函数的方法 在vue文件中&#xff0c;如果想要在组件里&#xff0c;通过事件触发&#xff0c;调用到函数&#xff0c;这个函数需要放在特定的位置&#xff0c;如下&#xff1a; <script> export default {methods: {t1(){},t2(){},t3(){}} }…

华为设备WLAN基础配置

WLAN基础配置之AP上线 配置WLAN无线网络的第一阶段&#xff0c;AP上线技术&#xff1a; 实验目标&#xff1a;使得AP能够获得来自AC的DHCP地址服务的地址&#xff0c;且是该网段地址池中的IP。 实验步骤&#xff1a; 1.把AC当作三层交换机配置虚拟网关 sys Enter system view…

安卓CardView使用

目录 前言一、基础使用1.1 依赖导入1.2 CardView的常用属性1.3 CardView继承关系 二、关于Z轴的概念三、CardView效果3.1 圆角 CardView3.2 阴影 CardView3.3 设置卡片背景3.4 设置卡片背景&#xff08;内部颜色&#xff09;3.5 同时设置背景颜色 前言 CardView是Android支持库…

安卓调试问题记录

将之前Qt开发安卓时遇到的一些报错记录下 问题1 FAILURE: Build failed with an exception. What went wrong: A problem occurred configuring root project ‘android-build’. ​ >Could not resolve all files for configuration ‘:classpath’. ​ >Could not dow…

ubuntu rk3399 自启脚本

systemd 默认读取 /etc/systemd/system 下的配置文件&#xff0c;该目录下的文件会链接/lib/systemd/system/下的文件。 执行 ls /lib/systemd/system 你可以看到有很多启动脚本&#xff0c;其中就有我们需要的 rc.local.service 打开脚本内容&#xff08;如果没有就创建&…

WXML模板语法-数据绑定

1.数据绑定的基本原则 (1)在data中定义数据 (2)在WXML中使用数据 2.在data页面中定义数据&#xff1a;在页面对应的.js文件中&#xff0c;把数据定义在data对象中即可 &#xff08;这里打错了 应该是数组类型的数据... 报意思啊&#xff09; 3.Mustache语法的格式 把data中的…

低代码开发平台:开启企业数字化转型的快捷通道

低代码开发平台&#xff08;Low-Code Development Platform&#xff09;是近年来企业数字化转型中备受瞩目的技术工具&#xff0c;其被誉为加速业务上线的利器。随着信息技术的迅猛发展&#xff0c;企业对于数字化的需求与日俱增&#xff0c;但传统的软件研发流程往往耗时耗力&…

MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型

目录 主要内容 部分代码 部分结果一览 下载链接 主要内容 该程序实现多输入单输出预测&#xff0c;通过融合正余弦和柯西变异改进麻雀搜索算法&#xff0c;对CNN-BiLSTM的学习率、正则化参数以及BiLSTM隐含层神经元个数等进行优化&#xff0c;并对比了该改进算法…

PHP质量工具系列之phpunit

安装 composer require phpunit/phpunit --dev编写用咧 单元测试 以下是一个thinkphp6/8的示例&#xff0c;可根据实际情况修改&#xff0c;一般是放在项目目录的tests文件夹中&#xff0c;tests文件夹和public同级 <?php declare (strict_types 1);namespace tests;u…

摄像头应用测试

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

LLM 大模型学习必知必会系列(八):10分钟微调专属于自己的大模型

LLM 大模型学习必知必会系列(八)&#xff1a;10分钟微调专属于自己的大模型 1.环境安装 # 设置pip全局镜像 (加速下载) pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ # 安装ms-swift pip install ms-swift[llm] -U# 环境对齐 (通常不需要运行. …

Linux 信号捕捉与处理

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux知识分享⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Linux知识   &#x1f51d; ​ 目录 前言 1. 信号的处理时机 1.1用户…

【排版问题解决】word加入公式时字间距突然变大

出现以下问题 解决方案 第一步:选择段落 第二步 段落括起来后右键选择“段落”- 第三步 “换行和分页”-在换行里打勾“允许西文在单词中间换行”。 恢复格式

vue.js状态管理和服务端渲染

状态管理 vuejs状态管理的几种方式 组件内管理状态&#xff1a;通过data&#xff0c;computed等属性管理组件内部状态 父子组件通信&#xff1a;通过props和自定义事件实现父子组件状态的通信和传递 事件总线eventBus&#xff1a;通过new Vue()实例&#xff0c;实现跨组件通…

LP-MSPM03507学习资料汇总

(因对MSPM0研究不够深入,故暂不开启浏览权限,权当记录学习。但愿尽快掌握供大家免费阅读。有意者可私信我共同学习) 一、延时函数 1、滴答定时器SYSTICK 1.1 SysConfig配置 配置1ms延时函数,并开启中断 1.2 编写延时函数delay_ms unsigned int utick = 0;//滴答定时器中…