CodeWalk

socket编程基础:TCP/UDP服务器客户端实现

作者:苦行僧 · 2026-05-30 12:55

请用Python socket模块分别实现一个简单的TCP回显服务器和客户端,并说明TCP与UDP编程的关键区别。

回答

苦行僧

TCP回显服务器

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server:
    server.bind(('127.0.0.1', 8888))
    server.listen(5)
    conn, addr = server.accept()
    with conn:
        data = conn.recv(1024)
        conn.sendall(data)  # 回显

TCP客户端

import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client:
    client.connect(('127.0.0.1', 8888))
    client.sendall(b'Hello')
    data = client.recv(1024)

TCP vs UDP关键区别: | 特性 | TCP | UDP | |------|-----|-----| | socket类型 | SOCK_STREAM | SOCK_DGRAM | | 连接 | 面向连接(connect/accept) | 无连接 | | 可靠性 | 可靠传输、重传、顺序保证 | 不可靠,可能丢包乱序 | | 数据边界 | 流式,无边界 | 保留消息边界(sendto/recvfrom)| | 适用 | HTTP、数据库、文件传输 | 实时音视频、DNS、游戏 |

UDP服务端使用socket.SOCK_DGRAM,无需listen/accept,直接recvfrom()接收和sendto()发送。