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()
相关推荐
我命由我123454 分钟前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂9 分钟前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
2401_8685347810 分钟前
论网络虚拟化技术在企业网络中的应用
网络
atwednesday30 分钟前
一文理解python中的task,协程,woker
python
金色光环36 分钟前
【DSP学习】C2000_ADC中断_笔记
笔记·学习
Дерек的学习记录43 分钟前
Unreal Engine 5:第三人称运动系统和人物动画
开发语言·学习·ue5
zhangrelay43 分钟前
mrpt杂乱笔记-26-10-31
笔记·学习
盛世宏博智慧档案1 小时前
一站式智慧档案解决方案,如何实现防火防盗漏水多维度安全监测实践
服务器·网络·数据库
雷✘1 小时前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
用户0332126663671 小时前
使用 Python 在 Excel 中添加与删除筛选器
python·excel