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()
相关推荐
痛&快乐着13 分钟前
Python 包管理工具 uv 命令大全(附核心注意事项)
python·uv
专心搞代码17 分钟前
【大模型开发】python基础(二)
开发语言·python
Feibo201118 分钟前
OpenClaw部署
python
CQU_JIAKE23 分钟前
3.23【A】
linux·服务器·网络
努力学习的小廉27 分钟前
Python基础——搭建 Python 环境
开发语言·python
jinanwuhuaguo30 分钟前
OpenClaw全网使用人群全景深度分析报告
网络·人工智能·网络协议·rpc·openclaw
啊我不会诶36 分钟前
最小生成树
c++·笔记·学习·算法
清水白石00838 分钟前
Python 编程全景解析:四大核心容器的性能较量、语义之美与高阶实战
开发语言·数据库·python
2401_8785302138 分钟前
深入理解Python的if __name__ == ‘__main__‘
jvm·数据库·python
忘忧记1 小时前
pytest + YAML + requests`简单实例化
网络·pytest