Python基础教程(八十)网络编程之TCP/IP简介:Python TCP/IP 硬核解析,从零到精通网络通信(附双端示例代码)

一、TCP/IP核心概念

  1. 协议分层
    • IP层:负责主机寻址和路由(非可靠传输)
    • TCP层:在IP基础上建立可靠连接,保证数据顺序和完整性
  1. 关键特性
    • 三次握手建立连接
    • 流量控制与拥塞避免
    • 全双工字节流通信

二、Python socket 模块精要

import socket
# 创建TCP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # AF_INET: IPv4, SOCK_STREAM: TCP

三、实战示例:双端通信代码

服务端代码 (server.py)

import socket

HOST = '127.0.0.1'  # 本地回环地址
PORT = 65432        # 监听端口 (>1024)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))          # 绑定地址端口
    s.listen()                    # 开启监听
    conn, addr = s.accept()        # 阻塞等待连接
    with conn:
        print('Connected by', addr)
        while True:
            data = conn.recv(1024)  # 接收数据(最多1024字节)
            if not data: break     # 连接关闭
            conn.sendall(data)     # 回传数据

客户端代码 (client.py)

import socket

HOST = '127.0.0.1'  
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))           # 连接服务器
    s.sendall(b'Hello, TCP World!')   # 发送字节数据
    data = s.recv(1024)               # 接收响应

print('Received:', repr(data))        # 输出:b'Hello, TCP World!'

四、运行验证

  1. 启动服务端:python server.py
  2. 启动客户端:python client.py
  3. 观察终端输出:
    • 服务端显示:Connected by ('127.0.0.1', 12345)
    • 客户端显示:Received: b'Hello, TCP World!'

核心要点总结

组件

作用

关键方法

Server Socket

监听连接请求

bind(), listen(), accept()

Client Socket

发起连接

connect()

数据传输

双向字节流通信

sendall(), recv()

注意:实际应用中需添加异常处理(如try-except)、设置超时(settimeout())及多线程/异步处理并发连接。通过SO_REUSEADDR选项可解决端口占用问题(s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1))。

此示例揭示了Python TCP通信的本质流程。扩展方向包括实现HTTP服务器、构建自定义协议或结合asyncio实现高性能异步通信——掌握这些基础,网络编程大门已向你敞开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值