zoukankan      html  css  js  c++  java
  • python socket粘包

    server:

    import socket,os


    server = socket.socket()
    server.bind(("localhost",9999))
    server.listen()


    while True:
    conn, addr = server.accept()
    while True:
    data= conn.recv(1024)
    print("接受成功",data)
    if not data:
    print("客户端已经断开")
    break
    print("执行指令",data)

    cmd_res =os.popen(data.decode()).read()
    print("before send ",len(cmd_res))
    if len(cmd_res)==0:
    cmd_res = "cmd has no putput"
    conn.send(str(len(cmd_res.encode())).encode("utf-8"))
    client_rec = conn.recv(1024)#去掉粘包
    conn.send(cmd_res.encode("utf-8"))
    print("send done ...")
    server.close()


    client:

    import socket

    client = socket.socket()
    client.connect(("localhost",9999))

    while True:
    cmd = input(">>:").strip()
    if len(cmd)==0:continue
    client.send(cmd.encode("utf-8"))
    print("发送成功")
    cmd_res_size = client.recv(1024) #接收这条命令执行结果的大小
    print("命令结果的大小",cmd_res_size)
    client.send("准备好接收了,发吧loser".encode("utf-8"))
    received_size = 0#已接收到的数据
    received_data =b''

    while received_size < int(cmd_res_size.decode()):
    data = client.recv(1024)
    received_size +=len(data)
    received_data +=data

    else:
    print("cmd res receive done...",received_size)
    print(received_data.decode())
    client.close()
     
  • 相关阅读:
    zabbix监控部署(三)
    zabbix监控部署(二)
    zabbix监控部署(一)
    Docker安装mysql5.7
    Docker修改容器默认存储路径
    MySQL全量+增量备份脚本
    企业级Dokcer镜像仓库Harbor部署
    Linux环境pyhon3安装pyinstaller
    配置Hive元数据数据库为PostgreSQL
    Oracle 11gR2 RAC 添加节点
  • 原文地址:https://www.cnblogs.com/anhao-world/p/13444425.html
Copyright © 2011-2022 走看看