首页 > 编程语言 >【python基础】6.网络编程和通信

【python基础】6.网络编程和通信

时间:2024-01-04 11:22:23浏览次数:31  
标签:http socket python 编程 通信 urllib port utf 连接

网络编程和通信

基于Socket的网络编程

Socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket后面,对用户来说只需要调用Socket规定的相关接口,让Socket去组织符合指定的协议数据然后进行通信。

TCP Socket

  • servet
    1. 创建socket对象
    2. 绑定IP地址和端口号
    3. 监听连接
    4. 等待客户端连接
    5. 接收客户端数据
    6. 发送数据到客户端
    7. 关闭连接
# server.py
import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '127.0.0.1'
port = 8080

# 绑定IP地址和端口号
s.bind((ip, port))

# 监听连接
s.listen(5)

# 等待客户端连接
while True:
    c, addr = s.accept()
    print('连接地址:', addr)
    # 接收客户端数据
    print(c.recv(1024).decode('utf-8'))
    # 发送数据到客户端
    c.send('hello'.encode('utf-8'))
    # 关闭连接
    c.close()
  • client
    1. 创建socket对象
    2. 连接服务器
    3. 发送数据到服务器
    4. 接收服务器数据
    5. 关闭连接
# client.py
import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = '127.0.0.1'
port = 8080

# 连接服务器
s.connect((ip, port))

# 发送数据到服务器
s.send('hello'.encode('utf-8'))

# 接收服务器数据
print(s.recv(1024).decode('utf-8'))

# 关闭连接
s.close()

UDP Socket

  • server
    1. 创建socket对象
    2. 绑定IP地址和端口号
    3. 接收数据
    4. 发送数据
    5. 关闭连接
# server.py
import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ip = '127.0.0.1'
port = 8080

# 绑定IP地址和端口号
s.bind((ip, port))

while True:
# 接收数据
    data, addr = s.recvfrom(1024)
    if not data:
        break
    print('接收到数据:', data.decode('utf-8'))
    # 发送数据
    s.sendto('hello'.encode('utf-8'), addr)        

# 关闭连接
s.close()
  • client
    1. 创建socket对象
    2. 发送数据
    3. 接收数据
    4. 关闭连接
# client.py
import socket

# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
ip = '127.0.0.1'
port = 8080


# 发送数据
s.sendto('hello'.encode('utf-8'), (ip, port))

# 接收数据
new_data, addr = s.recvfrom(1024)
print(new_data.decode('utf-8'))

# 关闭连接
s.close()

基于urllib的网络编程

urllib

urllib提供了一系列用于操作URL的功能。

  • urllib.request:打开和读取URLs
  • urllib.error:包含urllib.request抛出的异常
  • urllib.parse:解析URLs
  • urllib.robotparser:解析robots.txt文件
  • urllib.response:包含urllib.request返回的对象

urllib.request

  • urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None):打开URLs
    • url:URL
    • data:发送到服务器的数据
    • timeout:设置超时时间
    • cafile:CA证书文件
    • capath:CA证书路径
    • cadefault:是否使用默认的CA证书
    • context:SSL设置
import urllib.request

# 打开URL
response = urllib.request.urlopen('http://www.baidu.com')
# 读取URL
print(response.read().decode('utf-8'))

基于http的网络编程

http

  • http.client:HTTP协议客户端
  • http.server:HTTP协议服务器端
  • http.cookies:HTTP协议Cookies
  • http.cookiejar:HTTP协议CookieJar

http.client

  • http.client.HTTPConnection(host, port=None, [timeout, ]source_address=None, blocksize=8192):创建HTTP连接
    • host:主机名
    • port:端口号
    • timeout:超时时间
    • source_address:源地址
    • blocksize:块大小
import http.client

# 创建HTTP连接
conn = http.client.HTTPConnection('www.baidu.com')
# 发送请求
conn.request('GET', '/')
# 获取响应
response = conn.getresponse()
# 读取响应
print(response.read().decode('utf-8'))
# 关闭连接
conn.close()

标签:http,socket,python,编程,通信,urllib,port,utf,连接
From: https://www.cnblogs.com/agitm/p/17944843

相关文章

  • Python pip换国内源
    Pythonpip换国内源pip自带的源是国外,下载比较慢,可以更换为国内的源。下载的时候指定源:pipinstallXXXXXX-ihttps://pypi.tuna.tsinghua.edu.cn/simple临时更换(任选一个即可):#清华源pipinstallmarkdown-ihttps://pypi.tuna.tsinghua.edu.cn/simple#阿里源pipinstallma......
  • python使用Gemini API
    谷歌免费开放了Gemini(https://ai.google.dev)的API,每分钟可发出60个请求(RPM)。这样我们除了免费体验Bard:https://bard.google.com/外,还可以写程序来调用。安装依赖pipinstall-q-Ugoogle-generativeai-q或--quiet:这个参数用于减少安装过程中输出的信息量。通常,pipinstall......
  • 并行编程问题及回答总结
    如何理解编程模型和编程框架"编程模型"和"编程框架"是与软件开发和编程密切相关的两个概念,它们描述了不同层次上的抽象和组织方式。编程模型(ProgrammingModel):编程模型通常是一种抽象的方式,描述了程序员如何构建和组织代码,以及程序在执行时如何与计算资源和其他组件进行交互。......
  • 软件测试/测试开发|一文告诉你Python列表相关操作
    列表是Python中最常用的数据类型之一。它是一种有序、可变,异构的数据集合,可以存储多个不同类型的元素。列表的特点列表是Python中的一种数据结构,具有以下特点:有序性:列表中的元素按照添加的顺序进行存储,每个元素都有一个对应的索引,可以通过索引访问和操作列表中的元素。可变性:列......
  • 协议转换器技术白皮书:网络通信的桥梁
    在这个数字化迅速发展的时代,网络通信充当着信息传递的重要角色。随着技术的不断进步和网络环境的日趋复杂,不同的网络设备和系统之间需要有效沟通。协议转换器便是这样一种设备,它能够使得本不兼容的网络能够顺畅地进行数据交换和通信,促进了不同设备和系统之间的互操作性。一、协议转......
  • 编程语言的发展趋势是什么样的?
    随着计算机技术的不断发展,计算机编程语言也在不断更新和发展。未来编程语言的发展特点趋势是更安全、人性化(可读性、可写性)、跨平台这三个方向进行发展。更加简单易学更加多样性,有更加专业面向某一领域的语言,也会更加通用,对初学者友好。具有良好的模块化特性,能够更好地组织和管理代......
  • Windows下python,psycopg2使用连接HGDB
    瀚高数据库 目录环境文档用途详细信息环境系统平台:N/A版本:4.5文档用途 本文介绍在HGDB使用sm3认证时,python使用psycopg2连接HGDB的方法。详细信息 Python连接HGDB可以使用psycopg2、Django,Django是依赖psycopg2的,底层用的都是libpq,pip安装的psycopg2自带libpq。因此在一般情况......
  • Python保留浮点数小数位数的几种常见方法
    1.使用round()函数:number=3.14159rounded_number=round(number,2)print(rounded_number)#输出:3.142.使用字符串格式化:number=3.14159formatted_number='{:.2f}'.format(number)print(formatted_number)#输出:3.143.使用字符串的f-string格式化:number=3.14......
  • python初试终章
    之前在单机上实现了一个Django服务器,现在我们可以把这个服务器推上一个云平台。这里我选择使用阿里云。阿里云准备在阿里云官网(aliyun.com)页面注册阿里云账号。登录后选择云服务器ECS,并选择“创建实例”:选择操作系统Ubuntu14.0464位,设置密码。实例开通后,可以在实例记录中查......
  • pdm符合最新PEP标准的现代python 包以及依赖管理工具
    pdm符合最新PEP标准的现代python包以及依赖管理工具支持的特性简单快速的维护依赖解析,主要为了构建大的二进制分发PEP517构建后端PEP621项目元数据灵活强大的插件系统多功能用户脚本类似pnpm的中心化安装优化安装命令使用过的mac系统的 brewinstallpdm使用其他命令pipx......