Python学习---基于TCP协议的网络通信程序案例

TCP简介:

●TCP 面向连接、可靠的、基于字节流的传输控制协议

●TCP的特点

○面向连接

○可靠传输

■应答机制

■超时重传

■错误校验

■流量管控

●TCP通信模型

TCP严格区分客户端、服务端

tcp通信模型:

客户端代码:

python 复制代码
# 1﹑导入socket模块
import socket

# 2·创建socket套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 3·建立tcp连接(和服务端建立连接)
address = ("192.168.52.2", 8080)
tcp_client_socket.connect(address)
# 4·开始发送数据(到服务端)
tcp_client_socket.send("你好,世界!".encode("gbk"))
# 接收数据:二进制数据
recv_data = tcp_client_socket.recv(1024)
recv_text = recv_data.decode("gbk")
print("收到数据:", recv_text)
# 5·关闭套接字
tcp_client_socket.close()

服务端代码:

1.能够接受一个客户端的多条信息

2.能够接受多个客户端连接

目前是单线程,只有第一个客户端断开连接后第二个客户端才能连接,多线程可实现多个客户端同时连接收发消息

python 复制代码
import socket

# 1.socket创建一个套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.bind绑定ip和port,默认本地ip地址
address = ("", 10000)
tcp_server_socket.bind(address)
# 3.开启监听,listen使套接字变为可以被动链接,允许接受最大连接数
tcp_server_socket.listen(128)
while True:
    # 4.accept等待客户端的链接,返回一个新的套接字和客户端的ip地址端口号,此套接字负责和客户端通信
    recv_data = tcp_server_socket.accept()
    # 5.recv/send接收发送数据
    new_client_socket, client_ip_port = recv_data
    print(f"{client_ip_port}  已连接........................")
    while True:
        recv_data = new_client_socket.recv(1024)
        # 当接受到为空时说明客户端已经断开连接,服务器也应该断开,非空即为真:
        if recv_data:
            recv_text = recv_data.decode("gbk")
            print(f"接收到来自{str(client_ip_port)}的信息:{recv_text}")
        else:
            print("客户端已经断开连接!!!!")
            break
    # 关闭本次通信连接
    new_client_socket.close()
# 6.关闭服务器连接
tcp_server_socket.close()
相关推荐
SHENGWEI胜为3 小时前
二层网络广播风暴如何排查?从交换机接口计数器到 STP 拓扑变化分析
网络
智慧光迅AINOPOL4 小时前
园区全光网IP+POL架构怎么设计:组网拓扑与带宽演进
网络协议·tcp/ip·架构
艾芯微科技4 小时前
HR911130C|汉仁 HANRUN 集成变压器千兆 RJ45 网口参数、电路、PCB 布线、替代与采购避坑
网络·单片机·嵌入式硬件·集成测试·51单片机
日常筹谋记4 小时前
工业厂房 TPO 防水卷材:技术需求如何传导到配方层面?
运维·网络·html
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL批量生成“潮汕英歌舞不倒翁”IP | 角色一致性与多场景融合方案,附完整代码
开发语言·人工智能·python·prompt·aigc
Linux_cy4 小时前
服务器管理工具哪个好用?我用了七八个
运维·服务器·javascript·python·ssh·面板·gmssh
MoRanzhi12034 小时前
第6篇(下)· 使用 PyQt5 实现 2048 高性能计算版:统一运行控制与跨模式安全交接
python·pyqt·进程管理·状态机·软件架构·并发控制·数据一致性
code tsunami5 小时前
【无标题】
开发语言·python
CodeGL5 小时前
10、Python基础之进程和线程
开发语言·python
Young Doro6 小时前
独立性检测学习任务
人工智能·学习·数据挖掘