Python RPyC如何实现客户端与服务端通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python RPyC如何实现客户端与服务端通信相关的知识,希望对你有一定的参考价值。

如何利用RPyC实现客户端与服务端相互发送消息。我可以实现由服务端向客户端发送消息,不知道如何从客户端向服务器端发送消息!请大神发发功 帮帮忙!不是我没有诚意,我已经没有悬赏分了!
恳请大神帮帮忙~~~恕小女子才疏学浅~~~实在是不知道该如何下手~~~应该如何完善我的代码呢?我的代码只是完成了server向client传送信息,那反过来应该怎么办呢?

rpyc是我用过的最容易,也最强大的远程进程通讯了。当然如果你自己编写框架,可以比它更强大也可能。


你搜索一下官网或者是任意一个教程都可以找到一个解决方案,然后你变化一下就可以解决你的问题。


因为不太理解你的问题,所以先解释一下,rpyc实现的是将客户端代码,复制到服务端,并在服务端执行后将结果包装后返回服务端。当然如果服务端已经有这个代码了,就可以直接执行,然后结果返回。


所以原则上讲,不可能在客户端没有连接服务端的情形下,从服务端返回消息的。 所以你试验的应该是连接到服务端,然后获得响应。这个是可以的。


如果你想发消息到服务端直接通过函数的参数就可以啦。

import 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 rpyc
conn = connect("localhost", 18850)
print conn.root.responseme('hello server.')
conn.close()

返回结果应该是

echo: hello server.

参考技术A

python实现socket客户端和服务端示例:

1、服务器端:

#socket通信客户端
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如何实现客户端与服务端通信的主要内容,如果未能解决你的问题,请参考以下文章

Python socket编程客户端与服务端通信

如何实现服务端客户端异步通信

如何在 RPyC 中获取连接到服务器的客户端列表?

python实现两台不同主机之间进行通信(客户端和服务端)——Socket

python RPyC 用户数

python实现一个客户端与服务端的通信