模块介绍
socket
库是 Python 的标准库之一,提供了一种用于在网络程序之间进行通信的接口。该库适用于 Python 3.x 版本,通过封装底层 socket 接口,提供了丰富的功能来实现快速和可靠的网络通信。
适配版本:Python 3.x
该库包括为 IPv4 和 IPv6 地址创建套接字、为 TCP 和 UDP 协议的网络通信提供支持的功能。常见的 socket 类型有:
socket.AF_INET
(IPv4)socket.AF_INET6
(IPv6)socket.SOCK_STREAM
(TCP)socket.SOCK_DGRAM
(UDP)
应用场景
socket
库在许多网络编程场景中都有广泛的应用,例如:
- Web 服务器和客户端 - 创建简单的 Web 服务器和 HTTP 客户端。
- 实时通信 - 开发即时消息应用、网络聊天系统。
- 数据流传输 - 在网络上高效传输文件、音频和视频数据。
- 物联网设备通信 - 与传感器和智能设备之间保持网络连接。
- 网络爬虫 - 把数据从网络上抓取下来并进行处理。
安装说明
socket
库是 Python 的内置标准库,无需额外安装。只需 import socket
即可使用库中的所有功能。
如:
用法举例
示例 1: 创建一个 TCP 服务器和客户端
服务端代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 65432) server_socket.bind(server_address)
server_socket.listen(1) print('等待客户端连接...')
connection, client_address = server_socket.accept() try: print('连接来自', client_address) while True: data = connection.recv(1024) print('收到数据:', data.decode()) if data: connection.sendall(data) else: break finally: connection.close()
|
客户端代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 65432) client_socket.connect(server_address)
try: message = '这是来自客户端的消息' client_socket.sendall(message.encode()) data = client_socket.recv(1024) print('收到:', data.decode()) finally: client_socket.close()
|
示例 2: 创建一个 UDP 服务器和客户端
服务端代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = ('localhost', 65433) server_socket.bind(server_address)
print('等待客户端消息...') while True: data, address = server_socket.recvfrom(4096) print('收到消息来自:', address) print('消息内容:', data.decode()) if data: sent = server_socket.sendto(data, address)
|
客户端代码:
1 2 3 4 5 6 7 8 9 10
| import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_address = ('localhost', 65433)
message = '这是来自UDP客户端的消息' client_socket.sendto(message.encode(), server_address)
data, server = client_socket.recvfrom(4096) print('收到:', data.decode())
|
示例 3: 从网站获取数据(HTTP Client)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('example.com', 80) client_socket.connect(server_address)
try: request = 'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n' client_socket.sendall(request.encode()) response = client_socket.recv(4096) print('收到HTTP响应:') print(response.decode()) finally: client_socket.close()
|
希望这些例子能帮助你更好地理解和使用 Python 的 socket 库。如果你觉得这篇文章对你有所帮助,请持续关注我的博客 —— 全糖冲击博客。这里不仅汇总了所有 Python 标准库使用教程,还包含了丰富的实战经验分享与解决方案,是你的最佳学习资源。不断更新的内容,能够让你随时找到最新的技术动态与解决问题的方法。立即关注吧,搭建并完善你的知识体系!
软件版本可能变动
如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang