zoukankan      html  css  js  c++  java
  • 粘包

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

    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'))
  • 相关阅读:
    C#结构
    R语言快速入门
    C#_枚举类型
    C#_数组
    C#传递参数
    C#_字符串的操作
    python-函数之命名空间作用域
    python-迭代器和生成器
    python-文件操作
    python
  • 原文地址:https://www.cnblogs.com/ch2020/p/12527933.html
Copyright © 2011-2022 走看看