欢迎来到 Python 基础入门 Day12!在前几天的学习中,我们已经覆盖了从基础语法到异步编程的多个主题。如果你还没来得及复习,建议回顾一下之前的内容:
- Day01: Python 基础入门
- Day02: Python 数据类型
- Day03: Python 条件与循环
- Day04: Python 函数
- Day05: Python 文件操作
- Day06: Python 面向对象编程
- Day07: Python 内置模块
- Day08: Python 数据分析
- Day09: Python 高级特性
- Day10: Python 多线程与多进程
- Day11: Python 异步编程
目录
- 网络编程简介
- 什么是 Socket(套接字)?
- 创建一个 TCP 服务器
- 创建一个 TCP 客户端
- UDP 套接字编程
- 小结与练习
一、网络编程简介
1.1 什么是网络编程?
网络编程是指在程序中处理网络通信的过程。它允许不同计算机之间通过网络交换数据,如文件传输、聊天应用、网络爬虫等。Python 提供了强大的内置模块,如 socket
,可以轻松实现网络通信功能。
1.2 网络协议
- TCP(Transmission Control Protocol):一种面向连接的协议,提供可靠的数据传输。
- UDP(User Datagram Protocol):一种无连接的协议,数据传输效率高但不保证可靠性。
二、什么是 Socket(套接字)?
2.1 套接字概念
Socket(套接字)是网络通信的基石。它是操作系统提供的 API,用于在网络上发送和接收数据。通过 Socket,程序可以与远程主机建立连接,实现数据的传输。
2.2 套接字的创建
import socket
# 创建一个 TCP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
AF_INET
:表示 IPv4 地址SOCK_STREAM
:表示使用 TCP 协议
三、创建一个 TCP 服务器
3.1 服务器端代码示例
import socket
def start_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8080))
server_socket.listen(5)
print("Server is listening on port 8080...")
while True:
client_socket, addr = server_socket.accept()
print(f"Connection from {addr}")
client_socket.send(b'Hello, Client!')
client_socket.close()
start_server()
- 解释:
bind()
绑定 IP 地址和端口。listen()
设置服务器监听状态。accept()
等待客户端连接。
3.2 运行结果
Server is listening on port 8080...
Connection from ('127.0.0.1', 52345)
四、创建一个 TCP 客户端
4.1 客户端端代码示例
import socket
def start_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8080))
message = client_socket.recv(1024)
print(f"Received from server: {message.decode()}")
client_socket.close()
start_client()
- 解释:
connect()
连接到服务器。recv()
接收服务器数据。
4.2 运行结果
Received from server: Hello, Client!
五、UDP 套接字编程
5.1 UDP 服务器端代码示例
import socket
def udp_server():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('localhost', 8081))
print("UDP server is listening on port 8081...")
while True:
data, addr = server_socket.recvfrom(1024)
print(f"Received from {addr}: {data.decode()}")
server_socket.sendto(b'Hello, UDP Client!', addr)
udp_server()
5.2 UDP 客户端端代码示例
import socket
def udp_client():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.sendto(b'Hello, Server!', ('localhost', 8081))
data, server = client_socket.recvfrom(1024)
print(f"Received from server: {data.decode()}")
udp_client()
- 解释:
- UDP 不需要建立连接,直接发送和接收数据。
六、小结与练习
今天我们学习了 Python 的 网络编程,了解了 Socket 的基础使用,掌握了 TCP 和 UDP 的应用场景及其实现方法。网络编程是构建各种互联网应用的基础技能,希望你能通过实践深入理解这些概念。
今日练习题:
- 使用 TCP 协议实现一个简单的聊天室程序。
- 使用 UDP 协议编写一个广播消息的程序。
- 试着用 Python 创建一个简单的 HTTP 服务器。
下一节预告:在 Day13 中,我们将介绍 Python 网络请求(Requests 模块),带你进一步了解如何与 Web 交互。敬请期待!