网站首页 > 技术文章 正文
一、Socket 编程基础
Socket 是网络编程中的关键概念,它为不同主机上的进程提供了通信的端点。在 Python 中,socket 模块提供了丰富的功能来实现基于套接字的网络通信。
二、基于 TCP 的网络应用示例
- TCP 服务器端
import socket
# 创建一个基于 IPv4 和 TCP 协议的套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器的 IP 地址和端口号
server_address = ('127.0.0.1', 9999)
server_socket.bind(server_address)
# 开始监听客户端连接,最大连接数设置为 5
server_socket.listen(5)
print('服务器已启动,等待客户端连接...')
while True:
# 接受客户端连接,返回客户端套接字和客户端地址
client_socket, client_address = server_socket.accept()
print(f'与客户端 {client_address} 建立连接')
try:
# 接收客户端发送的数据,最多接收 1024 字节
data = client_socket.recv(1024)
if data:
print(f'收到客户端消息:{data.decode()}')
# 向客户端发送响应消息
response = '消息已收到'.encode()
client_socket.send(response)
finally:
# 关闭与客户端的连接套接字
client_socket.close()
- TCP 客户端
import socket
# 创建一个基于 IPv4 和 TCP 协议的套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器的 IP 地址和端口号
server_address = ('127.0.0.1', 9999)
client_socket.connect(server_address)
# 向服务器发送消息
message = '你好,服务器'.encode()
client_socket.send(message)
# 接收服务器的响应
data = client_socket.recv(1024)
print(f'收到服务器回复:{data.decode()}')
# 关闭客户端套接字
client_socket.close()
三、基于 UDP 的网络应用示例
- UDP 服务器端
import socket
# 创建一个基于 IPv4 和 UDP 协议的套接字对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定服务器的 IP 地址和端口号
server_address = ('127.0.0.1', 8888)
server_socket.bind(server_address)
print('UDP 服务器已启动,等待接收数据...')
while True:
# 接收客户端发送的数据和客户端地址,最多接收 1024 字节
data, client_address = server_socket.recvfrom(1024)
if data:
print(f'收到客户端 {client_address} 消息:{data.decode()}')
# 向客户端发送响应消息
response = '数据已收到'.encode()
server_socket.sendto(response, client_address)
- UDP 客户端
import socket
# 创建一个基于 IPv4 和 UDP 协议的套接字对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 服务器的 IP 地址和端口号
server_address = ('127.0.0.1', 8888)
# 向服务器发送消息
message = '你好,UDP 服务器'.encode()
client_socket.sendto(message, server_address)
# 接收服务器的响应和服务器地址
data, server_address = client_socket.recvfrom(1024)
print(f'收到服务器回复:{data.decode()}')
# 关闭客户端套接字
client_socket.close()
在上述代码示例中:
- 对于 TCP 编程,服务器先创建套接字,绑定地址并监听,然后通过 accept 接受客户端连接,双方可以进行数据的发送和接收,通信结束后关闭连接。
- 对于 UDP 编程,服务器创建套接字并绑定地址后,通过 recvfrom 接收数据并获取客户端地址,然后可以使用 sendto 向客户端发送响应,无需建立连接的过程。
这些示例展示了使用 Python 的 socket 模块进行基本网络应用开发的过程,你可以根据实际需求进一步扩展和完善这些代码,例如处理多个客户端连接、优化数据传输逻辑等。
猜你喜欢
- 2024-12-26 在Python中使用Asyncio系统(3-6)?优雅地开启和关闭协程
- 2024-12-26 树莓派开机启动脚本
- 2024-12-26 Python 30 天探索:文件读取的奥秘之旅
- 2024-12-26 Python 面向对象编程:开启高效编程之旅
- 2024-12-26 python 启动EXCEL执行宏关闭EXCEL 定时器
- 2024-12-26 PHP/Python如何开启自带的静态文件 web 服务器
- 2024-12-26 一篇文章搞定Django项目上线与部署方法
- 2024-12-26 青少年之Python编程课程安排
- 2024-12-26 python:快速启动-android稳定性测试
- 2024-12-26 Python 实现函数的异步启动和异步结束
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 256℃Python短文,Python中的嵌套条件语句(六)
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 256℃python笔记:for循环嵌套。end=""的作用,图形打印
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 80℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)