Python RPyC如何实现客户端与服务端通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python RPyC如何实现客户端与服务端通信相关的知识,希望对你有一定的参考价值。
如何利用RPyC实现客户端与服务端相互发送消息。我可以实现由服务端向客户端发送消息,不知道如何从客户端向服务器端发送消息!请大神发发功 帮帮忙!不是我没有诚意,我已经没有悬赏分了!
恳请大神帮帮忙~~~恕小女子才疏学浅~~~实在是不知道该如何下手~~~应该如何完善我的代码呢?我的代码只是完成了server向client传送信息,那反过来应该怎么办呢?
rpyc是我用过的最容易,也最强大的远程进程通讯了。当然如果你自己编写框架,可以比它更强大也可能。
你搜索一下官网或者是任意一个教程都可以找到一个解决方案,然后你变化一下就可以解决你的问题。
因为不太理解你的问题,所以先解释一下,rpyc实现的是将客户端代码,复制到服务端,并在服务端执行后将结果包装后返回服务端。当然如果服务端已经有这个代码了,就可以直接执行,然后结果返回。
所以原则上讲,不可能在客户端没有连接服务端的情形下,从服务端返回消息的。 所以你试验的应该是连接到服务端,然后获得响应。这个是可以的。
如果你想发消息到服务端直接通过函数的参数就可以啦。
c=rpyc.connect('localhost',服务端端口)
print c.root.服务端exposed的函数(你要传递的参数放在这里)
c.close()追问
您好 非常感谢您的耐心解答!
图片中附上了我的代码
在此基础上如何从客户端发信息给服务端呢?
服务端已经exposed_name,
你可以改一下服务端代码。或者是重新建立一个函数。比如我再加一个函数
class FirstInput(Service):exposed_name=input('plz...')
print 'user input in server:',exposed_name)
def exposed_responseme(parameter_fromclient):
return 'echo: %s'%parameter_fromclient
客户端修改如下
import rpycconn = connect("localhost", 18850)
print conn.root.responseme('hello server.')
conn.close()
返回结果应该是
echo: hello server.
python实现socket客户端和服务端示例:
1、服务器端:
def client():
mysocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
mysocket.connect(('127.0.0.1',8000))
mysocket.send('hello')
while 1:
data=mysocket.recv(1024)
if data:
print data
else:
break
mysocket.close()
#服务器端
2、客户端:
def server():ser=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ser.bind(('127.0.0.1',8000))
ser.listen(5)
while 1:
client,addr=ser.accept()
print 'accept %s connect'%(addr,)
data=client.recv(1024)
print data
client.send('get')
client.close()
以上是关于Python RPyC如何实现客户端与服务端通信的主要内容,如果未能解决你的问题,请参考以下文章