zoukankan      html  css  js  c++  java
  • python3 tcp黏包情况一

    客户端没有及时接收缓冲区的包,造成多个包接收(服务端发送了一段数据,客户端只收了一小部分,客户端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包)
    -------------------------------------------tcp_stickybag_server.py-------------------------------------------
    # coding:utf-8
    import socket
    import subprocess
    
    tcp_server = socket.socket()
    ip_port = ("127.0.0.1", 8001)
    tcp_server.bind(ip_port)
    tcp_server.listen(5)
    
    while 1:
        conn, addr = tcp_server.accept()
        from_client_msg = conn.recv(1024)
        print("来自客户端的消息:", from_client_msg.decode("utf-8"))
        res = subprocess.Popen(
            from_client_msg.decode("utf-8"),
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
        )
        conn.send(res.stdout.read())
    
    conn.close()
    tcp_server.close()


    -------------------------------------------tcp_stickybag_client.py-------------------------------------------
    
    # coding:utf-8
    import socket
    
    tcp_client = socket.socket()
    ip_port = ("127.0.0.1", 8001)
    tcp_client.connect(ip_port)
    
    while 1:
        client_input = input("cmd指令1>>>:").strip()  # 可以输入dir 或 ipconfig等等
        tcp_client.send(client_input.encode("utf-8"))
        from_server_msg = tcp_client.recv(1024)
        print("来自服务端的消息:", from_server_msg.decode("gbk"))
    
    tcp_client.close()

    这种情况,可以尝试调大一次接收数据的最大大小,获取缓存区的大小,方法如下:

    # coding:utf-8
    import socket
    
    tcp_client = socket.socket()
    ip_port = ("127.0.0.1", 8001)
    tcp_client.connect(ip_port)
    bufsize = tcp_client.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF)
    
    while 1:
        client_input = input("cmd指令1>>>:").strip()
        tcp_client.send(client_input.encode("utf-8"))
        from_server_msg = tcp_client.recv(bufsize)
        print("来自服务端的消息:", from_server_msg.decode("gbk"))
    
    tcp_client.close() 
    
    
    
     
  • 相关阅读:
    20155327 2017-2018-2 《Java程序设计》第9周学习总结
    20155327《Java程序设计》第八周学习总结
    实验二 Java面向对象程序设计
    20155327 李百乾 Exp4 恶意代码分析
    20155327结对编程练习
    20155327第七周学习总结
    2017-2018-1 20155310 20155337 实验五 通讯协议设计
    # 2017-2018-1 20155337《信息安全系统设计基础》第十三周学习总结
    # 20155337 2017-2018 1 课上测试、课下作业、实验
    # 课下测试ch02
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/10928247.html
Copyright © 2011-2022 走看看