interhui 发表于 2006-03-14 13:19

Python与Ruby的通信

最近一直研究SOAP,并且实现了Python与Ruby的互通,这里和大家分享一下~

Python为服务器端

from ZSI import dispatch
def getWelcome(name):
        return "welcome " + name
print "Starting server..."
dispatch.AsServer(port=9000)

Ruby为客户端

require 'soap/rpc/driver'

proxy = SOAP::RPC::Driver.new("http://localhost:9000",nil,'test')

proxy.add_method('getWelcome','name')
print proxy.getWelcome('interhui')


这个是已经实现的,可是Ruby做服务器,Python做客户端却没有完全实现。

Ruby为服务端

require 'soap/rpc/standaloneServer'

class StringServant
        def getWelcome(name)
                return "Welcome "+name
        end
end

class Server < SOAP::RPC::StandaloneServer
        def on_init
                servant = StringServant.new
                add_method(servant,'getWelcome','name')
        end
end

if __FILE__ == $0
        svr = Server.new('Server','','0.0.0.0',9000)
        trap('INT') { svr.shutdown }
        svr.start
end

Python为客户端

from ZSI.client import Binding
u = ''
n= 'Server'
b = Binding(url=u, ns=n, host='localhost', port=9000)
result = b.getWelcome('inter')
print result


也请各路高手给予指点

wolfg 发表于 2006-03-14 21:46

试过server和client同为Python或Ruby实现吗?

interhui 发表于 2006-03-15 01:03

Python的Server和Client,Ruby的Server和Client都能实现互通,现在就是Ruby做服务器,Python做客户端不能互通

lijunling 发表于 2010-02-22 23:46

这个问题,我也碰到过,不过我是用 ruby 做服务器,客户端是AIX 下的 C 程序, 可以收到,但是gets 阻塞在那里了,后来就用read 指定长度,才可以!

两边都是ruby 服务器是没有问题的!

你这个可以这样实试看!

2gua 发表于 2010-03-07 17:01

不错啊!

2gua 发表于 2010-04-09 10:13

用Web Service(soap)来实现啊!

多姿多彩 发表于 2010-10-20 19:32

感谢分享

cinanine 发表于 2010-12-16 02:26

不错不错:PP
页: [1]
查看完整版本: Python与Ruby的通信