繁体   English   中英

(Python)通过网络发送结构化数据包

[英](Python) Send structured packet over network

我想构建一个聊天应用程序,该应用程序支持文本消息传递,组消息传递,文件传输(例如netmeeting)。 当我通过TCP套接字发送它时,我看到数据不是结构化的,所有数据都通过TCP以字符串形式发送。 我想以结构化的方式发送它,并使用一些标头,例如name:,ip:,data:,data_type_flag :(文件或文本消息)等...一个stackoverflow成员告诉我使用TELEPATHY,但我无法简单教程了解。 如何通过套接字发送结构化数据? 或可以给我推荐一个很好的教程来正确实现心灵感应。 我想通过网络作为对等而不是专用服务器进行通信。

尝试使用Google Protcol缓冲区Apache Thrift 有许多使用它们的示例。

至于您对“点对点”的评论,请意识到即使在点对点中,也有一个对等点始终充当服务器(有时两者都是)。

TCP是一个传送层协议,而不是应用层。 这意味着TCP不对您发送的数据类型负责,仅对原始位负责。 HTTP具有标头和其他元数据,因为它是应用程序级别的。

对于一个您正在谈论的项目,您将需要实现自己的应用程序层协议,但这并不是一项微不足道的任务。 我将在httplib模块中查看python源代码,以获取有关如何实现此协议的示例,但请注意,这可能与您想要的仍然完全不同,因为您希望持久性套接字连接是一流的点对点聊天协议(例如您所描述的协议)中的公民。

另一个选择是使用各种RPC库之一,例如xmlrpclib ,它将为您处理相当数量的所需低级网络事物(尽管不是文件传输;还有其他库,例如ftplib可以做到这一点)。

在发送数据之前先对数据进行腌制,然后在另一端进行腌制? http://docs.python.org/library/pickle.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM