热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SimpleXMLRPC_Python聊天室II(SimpleXMLRPCServer模块实现)

并不是上一个用SocketServer的聊天室的延续。用远程调用完成的聊天室。正好有Java的RMI聊天室的作业,就先用Python写了一个简单的类似远程调用的东西&

并不是上一个用SocketServer的聊天室的延续。用远程调用完成的聊天室。

正好有Java的RMI聊天室的作业,就先用Python写了一个简单的类似远程调用的东西,逻辑完成之后,在Java上写一遍也是水到渠成的事。

Python没有RMI,但拥有一个SimpleXMLRPCServer模块。

原理和RMI类似,不过省去了定义接口和生成stub的过程,而且不仅支持调用远程对象,更支持调用远程函数。

下面的代码都只调用了远程函数。这点和RMI必须通过远程对象调用方法不同。

说起啦,Python算是个OO语言,但不像Java那样完全的OO,可以完全不用OO的方式来编写程序。

基本上下面的程序就是如此,而且相对简洁,同样的RMI下次贴上来,代码量就多了很多,而且注册,接口等一系列事情,很烦。

当然这个SimpleXMLRPCServer模块有个问题:敢不敢快一点!!!!!基本上读端有大概1秒的延迟,这个略显坑爹了。。

from SimpleXMLRPCServer import SimpleXMLRPCServer

# list to store the total message

ms=[]

# remote function

# each write client invoke this function to say something, and the message will be store in the ms list

def say(s):

ms.append(s)

# each read client invoke this function to get the latest message.

# args: message_no the total message number which this client has received.

def showMessage(message_no):

if message_no>=0:

mst=ms[message_no:] # always to get the latest message which client haven't received.

return mst

# create the XMLRPCServer

svr=SimpleXMLRPCServer(("", 8080), allow_none=True)

# regisrer functions

svr.register_function(say)

svr.register_function(showMessage)

# run server

svr.serve_forever()

from xmlrpclib import ServerProxy

svr=ServerProxy("http://localhost:8080") #connect to server

while True: #loop to get input

s=raw_input("Zhu Di:")

svr.say(s) #Remote invoking the server's function

from xmlrpclib import ServerProxy

# connect to server

svr=ServerProxy("http://localhost:8080")

# the message number which this client has recveied.

message_no=0

# remote invoking the function to show the latest message

while True:

ms=svr.showMessage(message_no)

if len(ms)>0:

for i in range(len(ms)):

print ms[i]

message_no+=len(ms)



推荐阅读
author-avatar
我财我乐汽车869
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有