gpt4 book ai didi

python - 如何使用 Python 传输二进制数据?

转载 作者:可可西里 更新时间:2023-11-01 16:04:53 37 4
gpt4 key购买 nike

我是第一次从事客户端-服务器程序,对于我正在做的事情,我感到非常不知从何入手。

我要使用 Google Protocol Buffers在我的客户端和服务器之间传输二进制数据。我将使用 Python 变体。据我了解,基本思想是客户端将序列化数据,将其发送到服务器,然后服务器将反序列化数据。

问题是,我真的不确定从哪里开始向服务器发送二进制数据。我希望它是像 HTTP 请求一样“简单”的东西,但我一直在谷歌周围搜索传输二进制数据的方法,并迷失在大量的教程、指南和文档中。我什至无法通过调查 HTTP 传输来判断我是否在咆哮错误的树(我希望使用它,所以如果需要安全性,我可以将它提升到 HTTPS)。不过,我真的不想进入套接字编程级别 - 我想在转向它之前使用可用的库。 (我也更喜欢标准的 Python 库,但如果有完美的第 3 方库,我会继续使用。)

因此,如果有人对如何通过 Python 传输二进制数据的好方法有一个很好的起点(或想自己解释一下),我将不胜感激。顺便说一句,我正在运行的服务器目前正在运行带有 mod_python 的 Apache。

最佳答案

任何时候您要将二进制数据从一个系统移动到另一个系统时,都需要牢记几件事。

不同的机器以不同的方式存储相同的信息。这对内存和网络都有影响。更多信息在这里 ( http://en.wikipedia.org/wiki/Endianness )

因为您使用的是 python,所以您可以在这里放松一下(假设客户端和服务器都在 python 中)并且只使用 cPickle 来序列化您的数据。如果你真的想要二进制,你将不得不熟悉 python 的结构模块 ( http://docs.python.org/library/struct.html )。并了解如何打包/解包您的数据。

我会首先从简单的线路协议(protocol)服务器开始,直到您克服网络通信的困难。如果您以前从未做过,它会很快变得困惑。如何发出命令、如何传递数据、如何在出现错误时重新同步等...

如果您已经了解客户端/服务器协议(protocol)设计的基础知识,那么请先在您的磁盘上练习打包和解包二进制结构。对于这种情况,我还引用了 HTTP 和 FTP 的 RFC。

--------根据评论进行编辑--------通常这种事情是通过向服务器发送一个包含文件校验和以及文件大小(以字节为单位)的“ header ”来完成的。请注意,我指的不是 HTTP header ,您可以根据需要自定义它。事件链需要像这样......

CLIENT: "UPLOAD acbd18db4cc2f85cedef654fccc4a4d8 253521"
SERVER: "OK"
(server splits the text line to get the command, checksum, and size)
CLIENT: "010101101010101100010101010etc..." (up to 253521 bytes)
(server reasembles all received data into a file, then checksums it to make sure it matches the original)
SERVER: "YEP GOT IT"
CLIENT: "COOL CYA"

这过于简化了,但我希望你能明白我在这里说的是什么。

关于python - 如何使用 Python 传输二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/775482/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com