SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
Invocação Remota de Procedimentos  (RPC) Alexandre Bragança 2001 DEI / ISEP
Modelo de Programação
Cliente-Servidor
Funcionamento
OSF DCE ,[object Object],[object Object]
Exemplo  Hello World /* file hellop.c */ #include <stdio.h>  void HelloProc(unsigned char * pszString)  {  printf(“%s”, pszString);  }  /* file: hello.c, a stand-alone application */  #include “hellop.c”  void main(void)  {  unsigned Char * pszString = “Hello, World”;  HelloProc(pszString);  }
Definição do Interface ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Geração dos  Stubs Midl hello.idl Hello.h A incluir no  cliente e  no servidor hello_c.c  Stub Cliente hello_s.c Stub Servidor
Implementação do código do Servidor #include <stdlib.h> #include <stdio.h> #include &quot;hello.h&quot;  // header file generated by MIDL compiler void HelloProc(unsigned char * pszString) { printf(&quot;%s&quot;, pszString); } void Shutdown(void) { RPC_STATUS status; printf(&quot;Calling RpcMgmtStopServerListening&quot;); status = RpcMgmtStopServerListening(NULL); printf(&quot;RpcMgmtStopServerListening returned: 0x%x&quot;, status); if (status) { exit(status); } printf(&quot;Calling RpcServerUnregisterIf&quot;); status = RpcServerUnregisterIf(NULL, NULL, FALSE); printf(&quot;RpcServerUnregisterIf returned 0x%x&quot;, status); if (status) { exit(status); } }
Compilação & Execução ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisFabrízio Mello
 
Javascript Avançado
Javascript AvançadoJavascript Avançado
Javascript AvançadoBruno Tavares
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem GoAllisson Azevedo
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2Ismael
 
Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellFábio dos Reis
 
Spock Framework
Spock FrameworkSpock Framework
Spock FrameworkIsmael
 
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitMSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitRogério Moraes de Carvalho
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonwhanderley freitas
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHPFelipe Weckx
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02thomasdacosta
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]Vale Security Conference
 
Threads tasks e o tal do thread pool
Threads tasks e o tal do thread poolThreads tasks e o tal do thread pool
Threads tasks e o tal do thread poolFabrício Rissetto
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scriptingdcarneir
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoRafael Jaques
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 

Mais procurados (20)

PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demaisPHP e PostgreSQL: Um é pouco, dois é bom, três é demais
PHP e PostgreSQL: Um é pouco, dois é bom, três é demais
 
apostila C++
apostila C++apostila C++
apostila C++
 
Javascript Avançado
Javascript AvançadoJavascript Avançado
Javascript Avançado
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem Go
 
Spock Framework 2
Spock Framework 2Spock Framework 2
Spock Framework 2
 
PHP 7
PHP 7PHP 7
PHP 7
 
Bg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shellBg, fg, jobs, nohup - controle de tarefas do shell
Bg, fg, jobs, nohup - controle de tarefas do shell
 
Spock Framework
Spock FrameworkSpock Framework
Spock Framework
 
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e awaitMSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
MSDN Webcast: Task-based Asynchronous Pattern (TAP), async e await
 
introdução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e pythonintrodução a visão compuutacional com opencv e python
introdução a visão compuutacional com opencv e python
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHP
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]
Vale Security Conference - 2011 - 3 - Rener Alberto (Gr1nch) [DC Labs]
 
Threads tasks e o tal do thread pool
Threads tasks e o tal do thread poolThreads tasks e o tal do thread pool
Threads tasks e o tal do thread pool
 
Shell Scripting
Shell ScriptingShell Scripting
Shell Scripting
 
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de ComandoPHP na Tela Escura: Aplicações Poderosas em Linha de Comando
PHP na Tela Escura: Aplicações Poderosas em Linha de Comando
 
PHP-CLI em 7 passos
PHP-CLI em 7 passosPHP-CLI em 7 passos
PHP-CLI em 7 passos
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 

Destaque

Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日ebina yohichi
 
Ze žIvota Psa Bena
Ze žIvota Psa BenaZe žIvota Psa Bena
Ze žIvota Psa Benavstepanka
 
Tequila, mezcal y cocuy
Tequila, mezcal y cocuyTequila, mezcal y cocuy
Tequila, mezcal y cocuySENA Colombia
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 

Destaque (7)

Marketing agro alimentare
Marketing agro alimentareMarketing agro alimentare
Marketing agro alimentare
 
Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日Appearinの使い方 2014年3月11日
Appearinの使い方 2014年3月11日
 
Ze žIvota Psa Bena
Ze žIvota Psa BenaZe žIvota Psa Bena
Ze žIvota Psa Bena
 
Tequila, mezcal y cocuy
Tequila, mezcal y cocuyTequila, mezcal y cocuy
Tequila, mezcal y cocuy
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 

Semelhante a Invocação Remota de Procedimentos (RPC)

Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCAntonio Passos
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduinoCampus Party Brasil
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccsLuciano Zica
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de ServletsMarcio Marinho
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 

Semelhante a Invocação Remota de Procedimentos (RPC) (20)

Programa final
Programa finalPrograma final
Programa final
 
Controle relés com Log, sensor hall e emergência
Controle relés com Log, sensor hall e emergênciaControle relés com Log, sensor hall e emergência
Controle relés com Log, sensor hall e emergência
 
Programa final
Programa finalPrograma final
Programa final
 
Collectd
CollectdCollectd
Collectd
 
Manipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBCManipulando Bancos de Dados com JDBC
Manipulando Bancos de Dados com JDBC
 
Compus Party - processing e arduino
Compus Party - processing e arduinoCompus Party - processing e arduino
Compus Party - processing e arduino
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccs
 
02 - Fundamentos de Servlets
02 - Fundamentos de Servlets02 - Fundamentos de Servlets
02 - Fundamentos de Servlets
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Fundamentos de Sockets
Fundamentos de SocketsFundamentos de Sockets
Fundamentos de Sockets
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Ajax em java
Ajax em javaAjax em java
Ajax em java
 

Mais de elliando dias

Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojureelliando dias
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypseelliando dias
 

Mais de elliando dias (20)

Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 
FleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in ClojureFleetDB A Schema-Free Database in Clojure
FleetDB A Schema-Free Database in Clojure
 
Clojure and The Robot Apocalypse
Clojure and The Robot ApocalypseClojure and The Robot Apocalypse
Clojure and The Robot Apocalypse
 

Invocação Remota de Procedimentos (RPC)

  • 1. Invocação Remota de Procedimentos (RPC) Alexandre Bragança 2001 DEI / ISEP
  • 5.
  • 6. Exemplo Hello World /* file hellop.c */ #include <stdio.h> void HelloProc(unsigned char * pszString) { printf(“%s”, pszString); } /* file: hello.c, a stand-alone application */ #include “hellop.c” void main(void) { unsigned Char * pszString = “Hello, World”; HelloProc(pszString); }
  • 7.
  • 8. Geração dos Stubs Midl hello.idl Hello.h A incluir no cliente e no servidor hello_c.c Stub Cliente hello_s.c Stub Servidor
  • 9. Implementação do código do Servidor #include <stdlib.h> #include <stdio.h> #include &quot;hello.h&quot; // header file generated by MIDL compiler void HelloProc(unsigned char * pszString) { printf(&quot;%s&quot;, pszString); } void Shutdown(void) { RPC_STATUS status; printf(&quot;Calling RpcMgmtStopServerListening&quot;); status = RpcMgmtStopServerListening(NULL); printf(&quot;RpcMgmtStopServerListening returned: 0x%x&quot;, status); if (status) { exit(status); } printf(&quot;Calling RpcServerUnregisterIf&quot;); status = RpcServerUnregisterIf(NULL, NULL, FALSE); printf(&quot;RpcServerUnregisterIf returned 0x%x&quot;, status); if (status) { exit(status); } }
  • 10.