Python:通过套接字发送的消息大小

2023-12-08

我正在尝试使用发送消息socket图书馆。由于消息的大小是可变的,因此我决定在字符串的开头附加消息的大小,然后发送它。例如,如果消息是

Hello World!

这是 13 个字符长(我已经计算过 EOL),我会发送类似的内容

sizeof13charsinbytes|Hello World!

via socket.send(),然后我将分割大小和消息str.split()

Since socket.recv()需要以字节为单位的消息大小,如何查找消息的大小?我试过sys.getsizeof()但它为单字符字符串提供任意值。尺寸合适吗?


重新发明轮子是没有意义的。通过使用以下命令将字符串作为 python 字符串对象发送,可以轻松发送可变长度字符串:multiprocessing.connection模块。此方法将允许发送大多数 python 对象,而不仅仅是字符串。

import multiprocessing
import multiprocessing.connection as connection

def producer(data, address, authkey):
    with connection.Listener(address, authkey=authkey) as listener:
        with listener.accept() as conn:
            print('connection accepted from', listener.last_accepted)
            for item in data:
                print("producer sending:", repr(item))
                conn.send(item)


def consumer(address, authkey):
    with connection.Client(address, authkey=authkey) as conn:
        try:
            while True:
                item = conn.recv()
                print("consumer received:", repr(item))
        except EOFError:
            pass

listen_address = "localhost", 50000
remote_address = "localhost", 50000
authkey = b'secret password'

if __name__ == "__main__":
    data = ["1", "23", "456"]
    p = multiprocessing.Process(target=producer, args=(data, listen_address, authkey))
    p.start()
    consumer(remote_address, authkey)
    p.join()
    print("done")

这会产生类似的结果:

producer sending: '1'
producer sending: '23'
consumer received: '1'
producer sending: '456'
consumer received: '23'
consumer received: '456'
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:通过套接字发送的消息大小 的相关文章

  • 如何编写嵌套的 __init__.py 文件

    我正在努力解决嵌套问题 init py在我正在编写的Python包中 该包具有以下架构 module init py submodule1 init py source py submodule2 init py source py sub
  • 获取 .wav 文件长度或持续时间

    我正在寻找一种方法来找出 python 中音频文件 wav 的持续时间 到目前为止我已经了解了 pythonwave图书馆 mutagen pymedia pymad我无法获取 wav 文件的持续时间 Pymad给了我持续时间 但它不一致
  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 如何返回 cost, grad 作为 scipy 的 fmin_cg 函数的元组

    我怎样才能使 scipy 的fmin cg使用一个返回的函数cost and gradient作为元组 问题是有f对于成本和fprime对于梯度 我可能必须执行两次操作 非常昂贵 grad and cost被计算 此外 在它们之间共享变量可
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 在 python pandas 中,如何保存“网格图”?

    我对 pandas 绘图工具很陌生 在文档中 以下命令非常方便 myplot rts ret hist bins 50 by rts primary mic 然而 当我尝试从图中获取图形参考并保存它时 问题就出现了 myfigure myp
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 给定一个排序数组,就地删除重复项,使每个元素仅出现一次并返回新长度

    完整的问题 我开始在线学习 python 但对这个标记为简单的问题有疑问 给定一个排序数组 就地删除重复项 使得每个 元素只出现一次并返回新的长度 不分配 另一个数组的额外空间 您必须通过修改输入来完成此操作 数组就地 具有 O 1 额外内
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • minizinc python 安装

    我通过 anaconda 提示符在 python 上安装了 minizinc 就像其他软件包一样 pip install minizinc 该软件包表示已成功安装 我可以导入该模块 但是 我正在遵循基本示例https minizinc py
  • 如何给URL添加变量?

    我正在尝试从网站收集数据 我有一个 Excel 文件 其中包含该网站的所有不同扩展名 F i www example com example2 我有一个脚本可以成功从网站中提取 HTML 但现在我想为所有扩展自动执行此操作 然而 当我说 s
  • Django 管理器链接

    我想知道是否有可能 如果可以的话 如何 将多个管理器链接在一起以生成受两个单独管理器影响的查询集 我将解释我正在研究的具体示例 我有多个抽象模型类 用于为其他模型提供小型的特定功能 其中两个模型是DeleteMixin 和GlobalMix
  • 如何获取pandas中groupby对象中的组数?

    我想知道有多少个独特的组需要执行计算 给定一个名为 groupby 的对象dfgroup 我们如何找到组的数量 简单 快速 Pandaic ngroups 较新版本的 groupby API pandas gt 0 23 提供了此 未记录的
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • CSS 将比例转换为背景图像

    我很喜欢 CSS 部分对图像的影响 split banner right cl hover img webkit transform scale 1 1 transform scale 1 1 我需要将上面的 CSS 应用到 div 元素中
  • MongoDB - 使用聚合管道进行评论赞成/反对

    我正在尝试实现评论的赞成 反对机制 类似于 reddit 上的赞成 反对机制 我有一个单独的集合 名为commentReputation里面的文档可以是这样的 id ObjectId 5e5acb6d6034a879655c8819 com
  • 如何打开;另存为;然后从 PowerShell4 关闭 Excel 2013(启用宏)工作簿

    对上述 Com 操作进行搜索会产生 09 年甚至更早的链接 也许它没有改变 但我发现自己遇到了 它正在被另一个进程使用 的错误 即使我的桌面上没有打开 Excel 应用程序 我必须重新启动才能恢复 需要明确的是 我正在尝试打开一个现有文件
  • Heroku 应用程序启动超时

    我有一个相当大的 2 3 升级到 Rails 3 应用程序 它足够厚 无法通过 Heroku 的 60 秒启动门 因此它崩溃了 我已经做了很多工作来最大限度地减少 Gems 和初始化程序中的加载时间 但是有一些随机过程会消耗时间 而且我不太
  • C 解读声明

    好吧 这对我来说有点太多了 您如何阅读这些声明 char myCBT 10 请注意 我并不是专门要求提供这个示例 而是要求像我这样的初学者面临这样的难题时的一般经验法则 使用大卫 安德森的顺时针螺旋规则用于阅读此类符号
  • System.IO.FileSystemWatcher 的底层是如何工作的?

    我想了解 System IO FileSystemWatcher 在幕后是如何工作的 因为我有一个要求 我需要查看 100 个或更多文件夹下的所有文件 其中每个文件夹将包含大约 1K 个文件 我不确定我是否使用 FileSystemwatc
  • HiveUDF + saxon 9.1.0.8 + Java8 = 未能创建 XPathFactory

    我的 Spark 作业使用 HiveContext 和 Saxon 工作正常 除非代码中没有定义 UDF 在 UDF 实现的情况下 HiveContext 初始化失败并出现错误 我听说 saxon 9 5 1 5 中解决了 saxon ja
  • 解析器组合器:如何终止关键字重复

    我试图弄清楚如何使用关键字终止单词的重复 一个例子 class CAQueryLanguage extends JavaTokenParsers def expression START words END x gt println exp
  • CDI 扩展 - 在 ProcessAnnotatedType 阶段添加拦截器

    我正在尝试以编程方式添加拦截器 该拦截器称为 LogginInterceptor 仅记录其运行的方法的名称 当在方法上使用注释 Interceptors LogginInterceptor class 时 一切正常 然而 我正在尝试创建 C
  • 在运行时动态选择一个类

    我试图提出一个解决方案 在运行时根据消息类型选择处理 消息 的类 我知道我可以使用这样的东西 if msg type A MsgAProcessor execute message else if msg type B MsgBProces
  • IntelliJ IDEA 2016.3.4:构建过程异常终止

    我在 Intellij IDEA 中构建新的 java 项目时遇到错误 错误 构建过程异常终止 C Program Files Java jdk1 8 0 121 bin java Xmx700m Djava awt headless tr
  • 如何在 .NET SslStream 中为客户端身份验证指定接受的证书

    我正在尝试使用 Net System Security SslStream 类来处理具有客户端身份验证的 SSL TLS 流的服务器端 为了执行握手 我使用以下代码 SslStream sslStream new SslStream inn
  • 如何在 bash 中格式化数字,可能使用 printf ?

    这个如此简单的脚本失败了 bin bash n 1 printf v fn 05d n echo fn with 3 printf Illegal option v 为什么 Ubuntu 14 04 根据 Joe 这似乎是重复的以 scri
  • 为什么自定义函数引用一直指向旧函数

    我在 javascript设计模式 中找到了这个示例 并与以下代码的行为混淆 此代码创建一个自定义函数 var scareMe function alert Boo scareMe function alert Double boo 现在我
  • 使用
  • 而不包含
  • Closed 这个问题需要多问focused 目前不接受答案 插入有什么危险 li li 进入页面而不将项目包含在 ul 堵塞 例如 div style border solid 1px red li Item li li Another
  • 使用 Jenkins 执行 NUnit

    早上好 我想配置 Jenkins 服务器以使用插件运行 NUnitJenkins NUnit 插件但我尝试了很多东西但不起作用 我单击按钮 添加构建步骤 gt gt 执行Windows批处理命令但我在这里看到了http stackoverf
  • 我可以向现有静态类添加扩展方法吗?

    我很喜欢 C 中的扩展方法 但在向静态类添加扩展方法方面还没有取得任何成功 例如Console 例如 如果我想添加一个扩展Console 称为 WriteBlueLine 这样我就可以去 Console WriteBlueLine This
  • 在多行插入中使用 LAST_INSERT_ID()

    是否可以在插入查询中使用 LAST INSERT ID INSERT INTO mytable col1 col2 VALUES val1 null val2 LAST INSERT ID 尝试上面的 LAST INSERT ID 返回 0
  • 在表格边框上获取 Flutter DataTable 边框半径时出现问题

    我有一个DataTable我想添加一个边框半径 阅读完此内容后 我添加了DataTable to a Container小部件 当我不向标题添加背景颜色时 它效果很好 执行此操作时 整个表格的颜色都会改变 Container decorat
  • Python:通过套接字发送的消息大小

    我正在尝试使用发送消息socket图书馆 由于消息的大小是可变的 因此我决定在字符串的开头附加消息的大小 然后发送它 例如 如果消息是 Hello World 这是 13 个字符长 我已经计算过 EOL 我会发送类似的内容 sizeof13