python 基础学习socket -TCP编程

什么是TCP

传输控制协议(TCP:Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议的运行可划分为三个阶段:连接建立、数据传送和连接终止。

很多重要的机制保证了TCP的可靠性和强壮性,包括:

  • 使用序号,对收到的TCP报文段进行排序以及检测重复的数据。
  • 使用校验和检测报文段的错误,即无错传输。
  • 使用确认和计时器来检测和纠正丢包或延时。
  • 流控制。
  • 拥塞控制。
  • 丢失包的重传。

TCP编程

案例

TCP服务端:

python 复制代码
import socket
import threading

#创建TCP/IP socket
#绑定IP地址和端口
#监听连接
#接收客户端请求
#发送数据
#关闭连接

def handle_client(client_socket,client_addr):
    try:
        while True:
            content = client_socket.recv(1024).decode('utf-8')
            if not content:
                break
            print(f"客户端{client_addr[0]}说:{content}")
            client_socket.send(b"Hello, client!")
    except Exception as e:
        print(f"客户端{client_addr[0]}异常退出:{e}")
    finally:
        client_socket.close()

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_socket.bind(('0.0.0.0', 8080))
tcp_socket.listen(50)
#等待客户端连接
while True:
    client_socket, client_addr = tcp_socket.accept()
    print(f"客户端{client_addr[0]}已连接")
    #创建新线程处理客户端请求
    t = threading.Thread(target=handle_client, args=(client_socket, client_addr))
    t.start()
    t.join()

TCP客户端:

python 复制代码
import socket

#创建tcp socket
#创建连接到服务器的socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#连接到服务器
client_socket.connect(('127.0.0.1', 8080))
while True:
#发送数据
    client_socket.send(input("请向服务器发送数据:").encode('utf-8'))
    #接收数据
    data = client_socket.recv(1024).decode('utf-8')
    print(f"从服务器接收到的数据:{data}")
#关闭连接
#SOCK_STREAM:使用TCP协议
client_socket.close()
相关推荐
酒尘&1 小时前
JS数组不止Array!索引集合类全面解析
开发语言·前端·javascript·学习·js
冬夜戏雪1 小时前
【java学习日记】【2025.12.7】【7/60】
java·开发语言·学习
xwill*1 小时前
分词器(Tokenizer)-sentencepiece(把训练语料中的字符自动组合成一个最优的子词(subword)集合。)
开发语言·pytorch·python
wubba lubba dub dub7502 小时前
第二十八周 学习周报
学习
咖啡の猫2 小时前
Python列表的查询操作
开发语言·python
Chiandra_Leong2 小时前
Python-Pandas、Numpy
python·pandas
BoBoZz192 小时前
ParametricObjectsDemo多种参数曲面展示及面上部分点法线展示
python·vtk·图形渲染·图形处理
思成不止于此2 小时前
MySQL 查询实战(三):排序与综合练习
数据库·笔记·学习·mysql
QiZhang | UESTC2 小时前
学习日记day42
学习
深海潜水员2 小时前
OpenGL 学习笔记 第一章:绘制一个窗口
c++·笔记·学习·图形渲染·opengl