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()
相关推荐
用户83562907805118 小时前
Python 实现 PDF 文件加密与解密方法
后端·python
用户83562907805118 小时前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
你好潘先生1 天前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
Agent_大师1 天前
WebSocket 行情重连成功,K线缺口不会自动消失
python
荣码1 天前
LLM结构化输出:让AI返回JSON而不是废话,我踩了4个坑
java·python
copyer_xyf1 天前
FastAPI 如何连接 MySQL
后端·python
apocelipes2 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户8356290780512 天前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent2 天前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m6252 天前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python