我想构建一个支持短信,群发消息,文件传输(如netmeeting)的聊天应用程序。当我通过TCP套接字发送它时,我看到数据没有结构化所有数据作为字符串通过TCP发送。我希望以一种结构化的方式发送它,只有几个标题,如:name:,ip:,data:,data_type_flag :(文件或文本消息)等...一个stackoverflow成员告诉我使用TELEPATHY但我不能得到一个简单的教程要理解。如何通过套接字发送结构化数据?或者任何人都可以建议我一个正确实施心灵感应的好教程。我想通过网络作为点对点而不是专用服务器进行通信..谢谢
答案 0 :(得分:2)
尝试google protcol buffers或apache thrift。有很多关于如何使用它们的例子。
至于你对“点对点”的评论,请注意即使在对等点中,其中一个同行总是充当服务器(有时两者都是)。
答案 1 :(得分:1)
TCP是transport layer协议,而不是应用程序层。这意味着TCP不对您发送的数据的类型负责,只对原始位负责。 HTTP具有标头和其他元数据,因为它是应用程序级别。
对于像你所说的那个项目,你需要实现自己的应用层协议,但这不是一项简单的任务。我将在httplib module中查看python源代码,以获取如何实现此类协议的示例,但请注意,这可能与您想要的完全不同,因为您希望持久套接字连接是一个像您所描述的那样的点对点聊天协议中的一等公民。
另一个选择是使用各种RPC库中的一个,例如xmlrpclib,它将为您处理大量所需的低级网络内容(尽管不是文件传输;还有其他库,如ftplib可以做到这一点。)
答案 2 :(得分:0)
在发送数据之前腌制您的数据,并在另一端取消数据? http://docs.python.org/library/pickle.html