• 粘包


    粘包现象就是设置的接受大小过小,导致一次接受没有完,导致缓冲区还有未接受完的信息,导致下一次的接受会出现接收到上一次的信息。   这就是粘包现象

    udp不会出现粘包,tcp会出现粘包     粘包可以通过设置接受字节的长度进行解除

    udp远程控制的代码,服务端:

     1 from socket import *
     2 import subprocess
     3 
     4 udp_server = socket(AF_INET, SOCK_DGRAM)
     5 udp_server.bind(('127.0.0.1', 8080))
     6 while True:
     7     print('正在接受数据')
     8     cmd, addr = udp_server.recvfrom(1201)
     9     print('接受到来自%s的命令【%s】'%(addr,cmd.decode()))
    10     res = subprocess.Popen(cmd.decode(), shell=True, stdin=subprocess.PIPE, stderr=subprocess.PIPE,
    11                            stdout=subprocess.PIPE)
    12     err = res.stderr.read()
    13     if err:
    14         cmd_res = err
    15     else:
    16         cmd_res = res.stdout.read()
    17     if not cmd_res:
    18         cmd_res = '执行成功'.encode('GBK')
    19     udp_server.sendto(cmd_res, addr)

    客户端;

     1 from socket import *
     2 
     3 udp_client = socket(AF_INET, SOCK_DGRAM)
     4 while True:
     5     cmd = input('亲输入命令:')
     6     if not cmd: continue
     7     if cmd == 'quit': break
     8     udp_client.sendto(cmd.encode(), ('192.168.3.12', 8080))
     9     data, addr = udp_client.recvfrom(2222)
    10     print(data.decode('GBK'))
  • 相关阅读:
    为什么图层1剪切蒙版到图层2,图层1不见了?
    制作放射状背景
    如何制作底纹(2)
    如何制作底纹?
    web网页按钮如何制作
    取得表中数据的insert语句
    Solr查询详解
    .NET开发过程中的全文索引使用技巧之Solr
    工作中常用的数据库操作脚本整理
    如何在Linux上编译c++文件
  • 原文地址:https://www.cnblogs.com/ch2020/p/12527933.html
Copyright © 2020-2023  润新知