如何将数据从Python网页应用转移至Java桌面应用
我想要一些帮助,关于如何把数据从一个Python的网页应用程序传输到一个Java的桌面应用程序。
我现在的做法是让Java监听一个端口,接收数据。但是我不知道怎么从Python发送数据到服务器上一个开放的端口。
我的问题是,如何才能把数据从Python网页应用发送到电脑上的一个开放端口?这样做会不会有数据类型或者其他方面的问题呢?
3 个回答
如果你使用一种不依赖平台的数据格式,比如xml、json、yaml、ascii文本等等来表示数字,那你就不用担心太多问题。
如果你不能接受上述方法的效率问题,那就需要使用二进制协议。
Java使用网络字节顺序(也叫大端序)。而Python则使用本机的字节顺序,或者你可以自己指定字节顺序。在这里,你需要在写数字数据的时候指定使用大端序(可以参考这个链接的第7.3.2.1节)。
为什么不在Python中使用套接字,然后把数据发送到Java服务器呢?Java并不知道最终的客户端是Python,它看到的只是数据(字节)。我已经这样做过了,效果很好。
想了解更多关于数据类型转换的内容,可以看看Python的struct模块。
这个问题其实很大,因为有很多方法可以在服务器(你的Java应用)和客户端(你的Python应用)之间传输数据。
你的情况不是很清楚(你的“Python网络应用”具体指什么?),不过你可以考虑看看XML-RPC。XML-RPC使用起来非常简单,设置也很方便,它能处理“数据类型和其他问题”。你基本上只需要在服务器上设置一些函数,客户端就可以调用这些函数,然后用Python来调用它们。客户端会把参数打包好,服务器再把它们解包。返回值也是一样的。这是一个简单而干净的接口。
在Python中调用服务器时,你可以使用xmlrpclib模块。
如果你想在Java中设置一个XMLRPC服务器,你有很多 选择。我不是Java方面的专家,但我相信在那边也很简单。
有很多不错的XML-RPC教程。这里有一个,讲解了Python中的客户端和服务器。
正如我之前所说,你有很多选择。XML-RPC是一个不错且简单的入门方式,不会对你限制太多(例如:它内置了故障处理)。
祝你好运!