网站首页 > 技术文章 正文
套接字(socket)是一种在计算机网络中进行进程间通信的方法,它允许不同主机上的程序通过网络相互通信。套接字是网络编程的基础,几乎所有的网络应用程序都使用某种形式的套接字来实现网络功能。套接字可以用于各种类型的网络协议,如TCP、UDP等。
在 Python 中使用套接字(socket)进行网络通讯是一种常见的做法。接下来我给大家提供一个简单的 TCP 服务器和客户端的例子,它们可以互相发送和接收消息。
服务器端 (Server)
- 导入 socket 库。
- 创建一个 socket 对象。
- 绑定 IP 地址和端口号到这个 socket。
- 监听连接请求。
- 接受客户端的连接。
- 与客户端通信:发送/接收数据。
- 关闭连接。
import socket
def start_server(host='127.0.0.1', port=65432):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 绑定地址
s.bind((host, port))
# 开始监听
s.listen()
print(f"Server listening on {host}:{port}")
while True:
# 等待客户端连接
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
print(f"Received: {data.decode()}")
# 发送回客户端
conn.sendall(data)
if __name__ == '__main__':
start_server()
客户端 (Client)
- 导入 socket 库。
- 创建一个 socket 对象。
- 连接到服务器。
- 发送/接收数据。
- 关闭连接。
import socket
def start_client(host='127.0.0.1', port=65432):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 连接到服务器
s.connect((host, port))
message = "Hello, Server!"
# 发送数据
s.sendall(message.encode())
# 接收响应
data = s.recv(1024)
print(f"Received from server: {data.decode()}")
if __name__ == '__main__':
start_client()
使用说明
- 确保先运行服务器脚本,然后运行客户端脚本。
- 默认情况下,这里的例子使用本地回环地址 127.0.0.1 和端口 65432。你可以根据需要更改这些值。
- 服务器会持续运行并等待新的连接,直到手动停止。
- 每次客户端发送消息给服务器后,服务器会把相同的消息返回给客户端。
上面的代码展示了如何使用 Python 的标准库来实现基本的 TCP 客户端-服务器模型。对于更复杂的应用场景,可能还需要考虑错误处理、多线程或异步 I/O 等高级功能。
欢迎点赞关注!
猜你喜欢
- 2025-04-09 ScalersTalk成长会Python小组第17周学习笔记
- 2025-04-09 78行Python代码帮你复现微信撤回消息!
- 2025-04-09 利用gRPC构建Python微服务(二)-gRPC基础
- 2025-04-09 Python 网络编程的基础复习:理解Socket的作用
- 2025-04-09 python之list(set())函数(python的list函数)
- 2025-04-09 Python Queue 进阶用法(python queue库)
- 2025-04-09 python 模块 multiprocessing(python multiprocessor)
- 2025-04-09 用Python编写FPGA以太网MAC(附源码下载方式)
- 2025-04-09 Python RPC 之 Thrift(python之父)
- 2025-04-09 当前从 Python 调用 C/C++ 代码的有多少种方法、最佳方案是什么?
- 264℃Python短文,Python中的嵌套条件语句(六)
- 263℃python笔记:for循环嵌套。end=""的作用,图形打印
- 261℃PythonNet:实现Python与.Net代码相互调用!
- 256℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 256℃Python实现字符串小写转大写并写入文件
- 116℃原来2025是完美的平方年,一起探索六种平方的算吧
- 96℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 89℃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)