文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>python学习之socket二

python学习之socket二

时间:2009-01-16  来源:hkebao

1.rpyc/servers/classic_server.py
一个极其强大,极其通用,但是不安全的万能服务
2.rpyc/servers/registry_server.py
改变了连接模式 的服务
  • registry-server类似于dns服务器,简化了对rpyc服务所在ip、端口的记忆。
  • 在一个局域网中只需要一个此服务,一旦局域网中有一个主机运行了registry-server.py,那么我们就可以使用名字来连接服务。
域名解析工具,将一个域名过来就可以解析成了IP地址了!
通过名字就可以连接此服务了。
RPYC中提供了一些好的服务能够提供分布式计算服务,为此针对客户端提供了一些友好的封装。
提供的功能:
eval
execute
modules
通过使用c.root.eval或c.eval来访问了!
客户端访问:
c=rpyc.classic.connection("localhost")  #连接
c.modules.os.system('ls')#用modules可访问任何服务端库
c.eval('1+23')#简单python语句执行
为分布式计算做辅助,提供了文件操作封装:import rpyc.utils.remoting
  • download(conn, remotepath, localpath, ignore_invalid=False)
  • download_dir(conn, remotepath, localpath)
  • download_file(conn, remotepath, localpath)
  • update_module(conn, module)
  • upload(conn, localpath, remotepath, ignore_invalid=False)
  • upload_dir(conn, localpath, remotepath)
  • upload_file(conn, localpath, remotepath)
  • upload_package(conn, module, remotepath=None)

研究一下高级应用吧!
RPYC默认没有直接提供认证,需要自己处理,方案1:

服务端提供:

def exposed_login(user,pass) 函数

def exposed_logout()函数

其他exposed函数中检查用户是否登录,没有登录则直接返回。

[想想这之前用RO方式 的时候就遇到了这种问题了。可以在服务器端写一个判断是否登录的方法从SQL中查询出来返回一个布尔值]

让客户端去调用的哦!如果不能登录就提示说登录失败了!

方案二:

ThreadedServer(authenticator=认证函数)

认证函数参数为(socket),该函数在accept返回后立即被调用,认证函数可立即从网络上读取一行验证信息,认证失败抛出AuthenticationError异常

客户端建立连接后,立即对c.fileno文件句柄写一行验证信息


系统默认提供了VdbAuthenticator验证器,如果使用,客户端需要用tls_connect来进行连接,系统必须安装

tlslite库


RPYC提供了两个服务:

ThreadedServer

ForkingServer


服务可调用函数有:

start

register

unregister

close

代码中写得清楚哈哈!

s=ThreadedServer(MyService,port=12233,auto_register=False) #得到一个服务
s.start()#调用此服务中的函数



相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载