Python 基础入门 Day12

Python 基础入门 Day12

欢迎来到 Python 基础入门 Day12!在前几天的学习中,我们已经覆盖了从基础语法到异步编程的多个主题。如果你还没来得及复习,建议回顾一下之前的内容:


目录

  1. 网络编程简介
  2. 什么是 Socket(套接字)?
  3. 创建一个 TCP 服务器
  4. 创建一个 TCP 客户端
  5. UDP 套接字编程
  6. 小结与练习

一、网络编程简介

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 的应用场景及其实现方法。网络编程是构建各种互联网应用的基础技能,希望你能通过实践深入理解这些概念。

今日练习题:

  1. 使用 TCP 协议实现一个简单的聊天室程序。
  2. 使用 UDP 协议编写一个广播消息的程序。
  3. 试着用 Python 创建一个简单的 HTTP 服务器。

下一节预告:在 Day13 中,我们将介绍 Python 网络请求(Requests 模块),带你进一步了解如何与 Web 交互。敬请期待!


Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注