RPC

一、Remote Procedure Call:远程程序调用

二、一个进程调用另外一个进程上的函数

由于“Server-shoot”方法被标记为“在服务器上运行”,所以尽管是在第二个窗口(客户端)开火,输出的信息是:Server:准备射击,表明这是在服务器上运行。

在服务器上“Server-shoot”方法又调用调用了“MutiCast-Shoot”方法,“MutiCast-Shoot”(被标记为“多路传送”),所以服务器会通知所有客户端都去执行这个方法。

结果就显示:Server:全体射击和Client 1:全体射击。

因为没有勾选“运行专用服务器”,因此第一个窗口同时是服务器和客户端,“多路传送”的时候也把消息传送给也身兼客户端的自己,因此就会显示“Server:全体射击”

二、远程调用Actor拥有权。

  1. 如果通过Get All Actors Of Class函数获得到客户端A控制的角色实例赋值给标记为“在服务器端运行”的方法“Server-shoot”(目标默认是self),在客户端B上运行(把客户端B实例赋值给“Server-shoot”的目标参数),服务器上并不会去执行这个操作,被舍弃了,当然也不会被传播到其他客户端。
  2. 但如果是在服务器上调用标记为“在服务器端运行”的方法“Server-shoot”,不管“Server-shoot”的目标参数赋值给谁,都会被执行,也会被传播到其他客户端。

玩家A通过执行标识为Run On Server的开枪事件来通知服务器玩家A开枪了,服务器接收到玩家A的开枪通知,通过标识为“多路传播”的方法“开火动作”,来告诉所有客户端的玩家A镜像执行“开火动作”

下面的表格根据执行调用的 actor 的所有权(最左边的一列),总结了特定类型的 RPC 将在哪里执行。

从服务器调用的 RPC

 

Actor 所有权

未复制

NetMulticast

Server

Client

Client-owned actor

(客户端拥有Actor所有权)

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在 actor 的所属客户端上运行

Server-owned actor

(服务器端拥有Actor所有权

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在服务器上运行

Unowned actor

(没有拥有者的Actor

在服务器上运行

在服务器和所有客户端上运行

在服务器上运行

在服务器上运行

从客户端调用的 RPC

 

Actor 所有权

未复制

NetMulticast

Server

Client

Owned by invoking client

(Actor被所调用的客户端拥有所有权)

在执行调用的客户端上运行

在执行调用的客户端上运行

在服务器上运行

在执行调用的客户端上运行

Owned by a different client

(Actor被其他客户端拥有所有权)

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

Server-owned actor

(Actor被服务器端拥有所有权)

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

Unowned actor

(没有拥有者的Actor

在执行调用的客户端上运行

在执行调用的客户端上运行

丢弃

在执行调用的客户端上运行

关于RPC远程调用更多信息查看官方文档:http://api.unrealengine.com/CHN/Gameplay/Networking/Actors/RPCs/index.html

[UE4]RPC,远程调用的更多相关文章

  1. 測试JSON RPC远程调用(JSONclient)

    #include <string> #include <iostream> #include <curl/curl.h> /* 标题:JSonclient Auth ...

  2. 使用Socket&反射&Java流操作进行方法的远程调用(模拟RPC远程调用)

    写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...

  3. 从0到1:全面理解RPC远程调用

    上一篇关于 WSGI 的硬核长文,不知道有多少同学,能够从头看到尾的,不管你们有没有看得很过瘾,反正我是写得很爽,总有一种将一样知识吃透了的错觉. 今天我又给自己挖坑了,打算将 rpc 远程调用的知识 ...

  4. Openstack Nova 源码分析 — RPC 远程调用过程

    目录 目录 Nova Project Services Project 的程序入口 setuppy Nova中RPC远程过程调用 nova-compute RPC API的实现 novacompute ...

  5. rpc远程调用开发

    RPC即远程过程调用,适用于集群管理,集群节点就是RPCServer,而我们发起远程调用的web服务器就是RPCClient.所以是少数rpcClient(可能一个)对多个RPCServer(集群节点 ...

  6. dubbo集成zookeeper rpc远程调用

    注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍.在配置之前,请自行准备好zookeeper环境. 后续如果写zookeeper的配置会补放链接 添加Gradle依赖 co ...

  7. 详解RPC远程调用和消息队列MQ的区别

    PC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). RP ...

  8. go语言net包rpc远程调用的使用

    一.基于http的RPC 服务端: package main; import ( "net/rpc" "net/http" "log" ) ...

  9. RPC远程调用概念 &amp;&amp; demo实例

    RPC是指远程过程调用,直观说法就是A通过网络调用B的过程方法. 也就是说两台serverA.B,一个应用部署在Aserver上,想要调用Bserver上应用提供的函数/方法,因为不在一个内存空间,不 ...

  10. RabbitMQ学习之基于spring-rabbitmq的RPC远程调用

    http://blog.csdn.net/zhu_tianwei/article/details/40920985 spring-rabbitmq中实现远程接口调用,主要在com.rabbitmq.s ...

随机推荐

  1. Java中的权限学习笔记

    1.Java中的权限有两个层次,一个是类这一层,另一个是类成员那一层. 类这一层: public class可以在本包内被访问,也可以在包外被访问.而没有被public修饰的class只能在本包内被调 ...

  2. 使用kubebapps 管理helm 仓库已经应用使用Monocular专门提供helm 仓库查找

    Monocular 从1.0 开始专注于helm 的UI展示,对于部署以及维护已经去掉了,官方也提供了相关的说明以及 推荐了几个可选的部署工具,从使用以及架构上来说kubeapps 就是Monocul ...

  3. 一次单片机 SFR 页引发的“事故”

    一次单片机 SFR 页引发的"事故" 现象 需要使用单片机的 ADC 功能,在对 ADC 初始化后,根据内部分的 IVREN 计算出 VDD 的电压值 . 在读取时一直显示 ADC ...

  4. Wireshark常用过滤使用方法

    过滤源ip.目的ip. 在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src ...

  5. IntelliJ IDEA使用心得

    前言:我原来一直使用的是Eclipse,但是发现有的教程上使用的是Intellij这个IDE,而且我发现Eclipse在Web编程上特别是页面上的自动补全上确实有些不足,而且Intellij这个软件的 ...

  6. Package has no installation candidate解决方法

    今天在安装软件的时候出现了Package has no installation candidate的问题,如:# apt-get install <packagename>Reading ...

  7. jsp-提交表单时,select的值无法传递

    属性为"disabled",提交表单时,select的值无法传递,移除disabled属性,<input name="id" type="tex ...

  8. JMeter ----与WebDriver安装与测试

    JMeter ----与WebDriver安装与测试 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 环境与参考 jvm版本: 1.8.0_65 j ...

  9. Oracle ID 自增

    实现Oracle Id自增 1.方法一(Oracle Version Oracle 12c版本支持) create table app_student( id integer generated by ...

  10. Flume 多个agent串联

    多个agent串联 采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs,使用agent串联 根据需求,首先定义以下3大要素 第一台flum ...