Python 网络编程简介

网络编程涉及编写通过网络进行通信的软件。Python 拥有丰富的库,因此开发网络应用程序相对简单。本文介绍了 Python 网络编程,涵盖了基本概念并提供示例供您入门。

设置环境

在深入研究网络编程之前,请确保已安装 Python。您还需要 `socket` 库,它包含在 Python 的标准库中,因此无需额外安装。

理解套接字

套接字是通过网络发送或接收数据的端点。Python 的“套接字”库提供了使用套接字进行网络通信的接口。

创建一个简单的TCP服务器

下面是一个基本 TCP 服务器的示例,它监听并处理传入的连接:

import socket

def start_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print(f'Server listening on {host}:{port}')

    while True:
        client_socket, address = server_socket.accept()
        print(f'Connection from {address}')
        client_socket.sendall(b'Hello, client!')
        client_socket.close()

if __name__ == "__main__":
    start_server()

创建一个简单的 TCP 客户端

以下是客户端连接到服务器并接收消息的示例:

import socket

def connect_to_server(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((host, port))
    message = client_socket.recv(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    connect_to_server()

理解 UDP

UDP(用户数据报协议)是另一种用于网络通信的协议。与 TCP 不同,UDP 不保证交付、排序或错误检查。以下是 UDP 通信的一个基本示例:

UDP 服务器

import socket

def start_udp_server(host='localhost', port=12345):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind((host, port))
    print(f'UDP server listening on {host}:{port}')

    while True:
        message, address = server_socket.recvfrom(1024)
        print(f'Received message from {address}: {message.decode()}')
        server_socket.sendto(b'Hello, UDP client!', address)

if __name__ == "__main__":
    start_udp_server()

UDP 客户端

import socket

def send_udp_message(host='localhost', port=12345):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    client_socket.sendto(b'Hello, UDP server!', (host, port))
    message, _ = client_socket.recvfrom(1024)
    print('Received:', message.decode())
    client_socket.close()

if __name__ == "__main__":
    send_udp_message()

结论

Python 的“套接字”库为网络编程提供了强大的基础,可让您创建 TCP 和 UDP 应用程序。通过了解基本的套接字操作和协议,您可以构建各种网络应用程序和服务。继续探索 Python 的网络功能,以开发更复杂、更可靠的网络解决方案。