Python3_网络编程

Python 3 网络编程 网络编程涉及创建能够通过网络进行通信的程序。这包括客户端和服务器端的开发,其中客户端发送请求,服务器端响应这些请求。 阅读详情

Python 提供了两个级别访问的网络服务。:

  • 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
  • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

socket()函数

Python 中,我们用 socket()函数来创建套接字,语法格式如下:

socket.socket([family[, type[, proto]]])

参数

  • family: 套接字家族可以使AF_UNIX或者AF_INET
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
  • protocol: 一般不填默认为0.

Socket 对象(内建)方法

简单实例

服务端

我们使用 socket 模块的 socket 函数来创建一个 socket 对象。socket 对象可以通过调用其他函数来设置一个 socket 服务。

现在我们可以通过调用 bind(hostname, port) 函数来指定服务的 port(端口)。

接着,我们调用 socket 对象的 accept 方法。该方法等待客户端的连接,并返回 connection 对象,表示已连接到客户端。

完整代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Author: zhaosj

import socket
import sys

# 创建 socket 对象
serversocket = socket.socket(
    socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()

port = 9999

# 绑定端口号
serversocket.bind((host, port))

# 设置最大连接数,超过后排队
serversocket.listen(5)

while True:
    # 建立客户端连接
    clientsocket, addr = serversocket.accept()

    print("连接地址: %s" % str(addr))

    msg = '欢迎访问!' + "\r\n"
    clientsocket.send(msg.encode('utf-8'))
    clientsocket.close()

#执行:

客户端

接下来我们写一个简单的客户端实例连接到以上创建的服务。端口号为 9999。

socket.connect(hosname, port ) 方法打开一个 TCP 连接到主机为 hostname 端口为 port 的服务商。连接后我们就可以从服务端获取数据,记住,操作完成后需要关闭连接。

完整代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Author: zhaosj

import socket
import sys

import socket
import sys

# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()

# 设置端口号
port = 9999

# 连接服务,指定主机和端口
s.connect((host, port))

# 接收小于 1024 字节的数据
msg = s.recv(1024)

s.close()

print (msg.decode('utf-8'))

#执行:

Python Internet 模块

以下列出了 Python 网络编程的一些重要模块:

TCP 服务端

服务端结构:

tcps = socket() #创建服务器套接字
tcps.bind()      #把地址绑定到套接字
tcps.listen()      #监听链接
while True:      #服务器无限循环
    tcpc = tcps.accept() #接受客户端链接
    while True:         #通讯循环
        tcpc.recv()/tcpc.send() #对话(接收与发送)
    tcpc.close()    #关闭客户端套接字
tcps.close()        #关闭服务器套接字(可选)

时间戳服务端实例:

from socket import *
import time
COD = 'utf-8'
HOST = '192.168.164.141' # 主机ip
PORT = 21566 # 软件端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)
SIZE = 10 
tcpS = socket(AF_INET, SOCK_STREAM) # 创建socket对象
tcpS.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) #加入socket配置,重用ip和端口
tcpS.bind(ADDR) # 绑定ip端口号
tcpS.listen(SIZE)  # 设置最大链接数
while True:
    print("服务器启动,监听客户端链接")
    conn, addr = tcpS.accept() 
    print("链接的客户端", addr)
    while True:
        try:
            data = conn.recv(BUFSIZ) # 读取已链接客户的发送的消息
        except Exception:
            print("断开的客户端", addr)
            break
        print("客户端发送的内容:",data.decode(COD))
        if not data:
            break
        msg = time.strftime("%Y-%m-%d %X") #获取结构化事件戳
        msg1 = '[%s]:%s' % (msg, data.decode(COD))
        conn.send(msg1.encode(COD)) #发送消息给已链接客户端
    conn.close() #关闭客户端链接
tcpS.closel()

TCP 客户端

客户端结构:

tcpc = socket()    # 创建客户端套接字
tcpc.connect()    # 尝试连接服务器
while True:        # 通讯循环
    tcpc.send()/tcpc.recv()    # 对话(发送/接收)
tcpc.close()      # 关闭客户套接字

时间戳客户端实例:

from socket import *
from time import ctime
HOST = '192.168.164.141' #服务端ip
PORT = 21566 #服务端端口号
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建socket对象
tcpCliSock.connect(ADDR) #连接服务器
while True:
    data = input('>>').strip()
    if not data:
        break
    tcpCliSock.send(data.encode('utf-8')) #发送消息
    data = tcpCliSock.recv(BUFSIZ) #读取消息
    if not data:
        break
    print(data.decode('utf-8'))
tcpCliSock.close() #关闭客户端

 

 

python3中网络编程的编码问题 在学习python3网络编程的时候,总是出现“a bytes-like object is required,not ‘str’ ”这种提示,很苦恼,网上也百度了一波,可是还是没有得到解决,便看了看有关编码的知识,可是看了之后还是报同样的问题,感觉应该是send() sendto(),recv() recvfrom() 这几个函数的返回值和参数值的原因,于是便查了关于这几个函数的官方文档,果然我犯... 阅读详情

相关推荐

Python3之网络编程

Python3 提供了两个级别访问的网络服务: 1、低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket 接口的全部方法; 2、高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发; 一、Socket概念 ...

wxhjw507的博客 329

Python3 网络编程

4. **urllib**:`urllib`模块用于从URL中获取数据。3. **http.server**:`http.server`模块是Python标准库中的一个模块,用于创建简单的HTTP服务器。5. **requests**:`requests`库是一个功能强大且易于使用的HTTP客户端库,提供了简洁的API,可以方便地发送HTTP请求和处理响应。1. **socket**:`socket`模块是Python标准库中的核心网络编程模块,提供了底层的套接字接口,可以用于创建网络服务器和客户端。

smarten57的博客 790

【Python3教程】Python3高级篇之网络编程

本文介绍了Python3网络编程的全面指南,涵盖TCP/UDP编程、HTTP请求处理及异步网络开发。主要内容包括:使用socket模块实现TCP/UDP客户端和服务器;通过requests库发送HTTP请求;利用http.server快速搭建HTTP服务器;以及使用asyncio和aiohttp进行异步网络编程。文章还提供了WebSocket通信示例和实用技巧,如地址重用、非阻塞模式和异常处理等。适合需要实现从基础到高级网络通信功能的开发者参考,可应用于聊天程序、文件传输等多种场景。

No8g攻城狮的博客 561

【Python学习】之网络编程基础

服务器端代码 server.py #!/usr/bin/python # -*- coding: UTF-8 -*- import socket # 建立一个服务端 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(('localhost',6999)) #绑定要监听的端口 server.listen...

醉逍遥的博客 415

python网络编程(第三版)

python网络编程,适用于网络编程方向的同学,书中采用的是python3的代码。

【2025年五一数学建模竞赛】A题 完整论文 模型建立与求解

2025年五一数学建模竞赛 A题:基于历史数据与模式识别的道路车流量推测模型研究

Magnolia_He的博客 3783

python3的网络编程与socket编程示例

本文讲述网络编程基础,并介绍了socket,并以socket为基础进行了客户端和服务器端信号传输的代码展示

ximu__l的博客 1442

疑难问题(二)——PyTorch 2.3.0 ‘import torch‘ 错误排查:深入解析‘shm.dll‘加载失败与系统路径修复

本文深入解析了在Windows系统上安装PyTorch 2.3.0后,执行'import torch'时遇到的'shm.dll'加载失败错误(OSError)。该问题通常源于系统DLL搜索路径缺失,导致无法找到关键的共享内存通信组件或其依赖项。文章提供了核心解决方案:通过手动修改PyTorch的`__init__.py`文件,将用户基目录下的Library\bin路径添加到DLL搜索列表中,从而从根本上修复此导入错误,并给出了详细的修改步骤和验证方法。

weixin_29056865的博客 305

python3高级编程

python3高级编程

猛码Memmat 435

基于Halium 9为小米平板4移植Ubuntu Touch:内核适配与驱动调试实战

在移动设备生态中,Linux内核作为核心,通过硬件抽象层(HAL)管理底层硬件驱动,为上层系统提供统一接口。其模块化设计允许深度定制,是实现跨平台移植的技术基础。Halium项目正是利用这一原理,构建了一个中间层,将安卓内核的硬件支持能力“翻译”成标准Linux发行版能识别的格式,从而在手机、平板等移动设备上运行Ubuntu Touch、postmarketOS等移动Linux系统,极大地拓展了老旧设备的再利用价值。这一技术为开发者提供了在常见安卓硬件上进行Linux系统开发与定制的可能,尤其在嵌入式与物联

weixin_42639246的博客 372

编写一个期货跨期套利的程序,谈谈思路及案例

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1718

Python入门:Python3 网络编程全面学习教程

Python入门:Python3 网络编程全面学习教程,本文介绍Python3网络编程知识,涵盖两种层级服务:低级别的Socket提供BSD Sockets API,高级别的SocketServer简化服务器开发。解释了Socket(套接字)的概念及socket()函数参数,详述服务器端、客户端及公共用途的Socket对象方法。通过TCP客户端与服务器通信的实战案例,展示了具体实现代码与运行步骤,还列出了Python针对各类网络协议的常用模块,为网络编程学习提供了从基础到实践的全面指导。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 15万+

[AI] 嵌入模型选择:bge / text-embedding-3 / Jina Embeddings 对比与选型指南

摘要: 本文对比了BGE-M3、OpenAI和Jina三种主流嵌入模型在语言覆盖、性能、延迟、维度和成本等维度的差异。BGE-M3适合中文场景,本地部署成本低;OpenAI API多语能力强但依赖网络;Jina在多语表现突出但需关注商用许可。测试显示BGE-M3本地延迟3-6ms,OpenAI API延迟200-600ms。选型建议:隐私场景选BGE本地部署,多语低维护选OpenAI,高精度选Jina。部署时需注意批处理优化、向量库压缩和商用许可等问题,建议建立评测指标并监控关键指标。

每日出拳老爷子的博客 428

Python网络编程第3版学习资源:掌握Python网络编程精髓

Python网络编程第3版学习资源:掌握Python网络编程精髓 【下载地址】Python网络编程第3版学习资源 《Python网络编程(第3版)》是一本专为网络编程技术人员打造的实用指南,全面深入讲解Python 3在网络编程中的应用。本书从基础概念到高级技术,涵盖网络协议、数据传输、错误处理、服务器架构、HTTP协议...

gitblog_06710的博客 280

【产品经理修炼之道】-如何搭建企业级账务系统?

笔者公司的业务模式具有一定的独特性,不同于我们常见的市面上供应链类公司的进销存模式。公司主要为各大银行和金融机构提供信贷领域的风控服务,客户主要通过请求公司的数据产品接口产生费用,可以简单地理解为请求一次接口收费0.5元,一个月若是有1w人请求同一个接口则公司需要收费5000元。

xiaoli8748的专栏 5406

【100%通过率】华为OD机试真题2026双机位C卷 C语言 实现【加密算法】

【100%通过率】华为OD机试真题2026双机位C卷 Python&JS 实现【加密算法】有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下

MISAYAONE的博客 648

Python网络编程(第3版)学习资源

Python网络编程(第3版)学习资源 【下载地址】Python网络编程第3版学习资源 《Python网络编程(第3版)》是一本专为网络编程技术人员打造的实用指南,全面深入讲解Python 3在网络编程中的应用。本书从基础概念到高级技术,涵盖网络协议、数据传输、错误处理、服务器架构、HTTP协议、SSL支持、异步I/O循...

gitblog_06716的博客 645

2024年数字IC秋招-大疆-数字芯片开发工程师-笔试题

笔试题型:选择题 + 简答题笔试平台:大疆创新(电脑监控)笔试时间:90min做题感受:知识面覆盖很广,很多题目不会做(1) 什么是功耗优化中的DVFS技术?(2)降低功耗的原理是什么?(3)一般工作流程是怎样的?(4)必须的硬件模块有哪些?

qq_42135020的博客 2666

python3网络编程模块socket

1、Python 网络编程 Python 提供了两个级别访问的网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket 接口的全部方法。 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。 2.什么是socket? socket又称套接字,应用程序通常通过套接字向网络发出请求指令或者应答网络请求,使得主机或者计算上进程间可以通讯。 参考文献 1、https://www.runoob

qq_44176343的博客 731

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Python 3 网络编程深度解析与实战指南​

Python 3 网络编程提供了丰富且强大的工具和技术,从基础的 Socket 编程到高级的多线程、多进程和异步编程,再到网络安全防护,能够满足各种网络应用的开发需求。在上述代码中,服务器端首先创建了一个基于 IPv4 地址族和 TCP 协议的套接字,然后绑定到指定的地址和端口,并开始监听连接。通过套接字,应用程序可以与网络中的其他应用程序进行通信,它可以基于不同的协议(如 TCP、UDP)创建,也可以在不同的地址族(如 IPv4、IPv6)上工作。为了保障网络应用的安全,可以采取以下措施:​。

Code365 1014

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: Python3_MySQL数据库连接 - PyMySQL 驱动
下一篇: Python3_SMTP发送邮件
MR.ILen
博客等级 码龄10年 6粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值