社区
进程/线程/DLL
帖子详情
如何调用远程进程
sodawater
2000-03-12 09:29:00
各位大虾:
如何在本地进程中调用远端计算机上的进程
...全文
226
5
打赏
收藏
如何调用远程进程
各位大虾: 如何在本地进程中调用远端计算机上的进程
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lu0
2000-03-18
打赏
举报
回复
苏打水啊,人家的例程这么清晰明了还要注释,看来要在CSDN上写书教你了.:)
sodawater
2000-03-18
打赏
举报
回复
请加一点注释?
sodawater
2000-03-13
打赏
举报
回复
看不太懂,请用VISUALC6。0语言重新写过
rosement
2000-03-13
打赏
举报
回复
这就是VC6写的!!!
rosement
2000-03-12
打赏
举报
回复
回答这个问题其实就是RPC的编程:开发RPC应用程序,一个重要的要素就是接口。显然在客户和服务器的接口存根必须基于完全相同的函数定义上;否则RPC会失败。
1.定义接口(HELLO.IDL):
[
uuid(0EB13191-F7C4-11d3-BF4A-00104B17A4FB),/*注意你必须在自己的程序中生成自己的UUID,利用GUIDGEN应用程序,在VISUAL STUDIO中*/
version(1.0)
]
2.应用程序配置文件(HELLO.ACF)
[
implicit_handle(handle_t hello_IfHandle)
//implicit_handle 的使用规定作为全局变量维护句柄
]
interface hello
{
}
3.编译HELLO.IDL
MIDL HELLO.IDL
编译的结果生成HELLO_C.C,HELLO_S.C,HELLO.H
你看一下这些文件,发现了什么?!
4.编写服务器程序
#include <stdlib.h>
#include <stdio.h>
#include "hello.h"
void HelloProc(const unsigned char* pszString)
{
printf("%s\n",pszString);
}
void Shutdown(void)
{
RpcMgmtStopServerListening(NULL);
RpcServerUnregisterIf(NULL,NULL,FALSE);
}
void main(int argc,char* argv[])
{
RpcServerUseProtseqEp((unsigned char *)"ncacn_ip_tcp",20,(unsigned char *)"8000",NULL);
RpcServerRegisterIf(hello_v1_0_s_ifspec,NULL,NULL);
RpcServerListen(1,20,FALSE);
}
void __RPC_FAR* __RPC_USER midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
{
free(ptr);
}
interface hello
{
void HelloProc([in,string]const unsigned char* pszString);
void Shutdown(void);
}
5.编译服务器程序
CL HELLOS.C HELLO_S.C RPCRT4.LIB
生成HELLOS.EXE
6.编写客户程序
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "hello.h"
void main(int argc,char* argv[])
{
unsigned char* pszStringBinding;
if(argc!=3)
{
printf("Usage:%s hostname string-to-print\n",argv[0]);
exit(1);
}
RpcStringBindingCompose(NULL,(unsigned char*)"ncacn_ip_tcp",(unsigned char*)argv[1],(unsigned char*)"8000",NULL,&pszStringBinding);
RpcBindingFromStringBinding(pszStringBinding,&hello_IfHandle);
if(strcmp(argv[2],"SHUTDOWN"))HelloProc((unsigned char*)argv[2]);
else Shutdown();
RpcStringFree(&pszStringBinding);
RpcBindingFree(&hello_IfHandle);
exit(0);
}
void __RPC_FAR* __RPC_USER midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
{
free(ptr);
}
7.编译客户程序
CL HELLOC.C HELLO_C.C RPCRT4.LIB
生成HELLOC.EXE
8.测试程序
在两个DOS窗口中运行,一个运行HELLOS,在同一台机器上,另一个运行HELLOC LOCALHOST “HELLO”
看看发生了什么?
Dalvik虚拟机 PPT版
Android应用程序是运行在Dalvik虚拟机里面的,并且每一个应用程序对应有一个单独的Dalvik虚拟机实例。Android应用程序中的Dalvik虚拟机实例实际上是从Zygote
进程
的地址空间拷贝而来的,这样就可以加快Android应用程序的启动速度。Dalvik虚拟机与Java虚拟机共享有差不多的特性,例如,它们都是解释执行,并且支持即时编译(JIT)、垃圾收集(GC)、Java本地方法
调用
(JNI)和Java
远程
调试协议(JDWP)等,差别在于两者执行的指令集是不一样的,并且前者的指令集是基本寄存器的,而后者的指令集是基于堆栈的。这个PPT讲Dalvik虚拟机的内存管理、垃圾收集、即时编译、Java本地
调用
、
进程
和线程管理等。理解Dalvik虚拟机的上述实现细节,有助于在运行时修改程序的行为,例如,拦截Java函数的
调用
。
dll加载卸载工具源码
远程
注入方式实现LoadLibrary,FreeLibrary 附带遍历
进程
和模块dll功能。svchost等的系统
进程
不能遍历,没做处理。 用了破解的皮肤组件,360之类的软件可能会唧唧歪歪,不喜欢的可以自行修改代码和删除相关皮肤文件的
调用
。
Socket编程系列之7:RCF
远程
调用
框架编程实战
Socket编程系列之7:RCF
远程
调用
框架编程实战 Socket编程系列之7:RCF
远程
调用
框架编程实战,本课程包括Windows搭建RCF环境及Helloworld案例、Linux开发必备之GCC与CMake、Linux编译RCF及跨平台案例实战、基于RCF...
分布式通信:
远程
调用
分布式通信:
远程
调用
前言什么是
远程
调用
?
远程
调用
的原理及应用RPC 的原理及应用RMI 的原理及应用RPC 与 RMI 对比分析知识扩展:
远程
过程
调用
存在同步和异步吗?总结 前言 分布式的本质就是多
进程
协作,共同完成任务。要协作自然免不了通信。分布式通信技术模块中分布式通信中的
远程
调用
。 什么是
远程
调用
? 以电商购物平台为例,每一笔交易都涉及订单系统、支付系统及库存系统,假设三个系统分别部署在三台机器 A、B、C 中独立运行,订单交易流程如下所示: 用户下单时,
调用
本地(机器 A)的订单系统进行下单;
远程
调用
:
远程
过程
调用
(RPC)和
远程
方法
调用
(RMI)
远程
调用
包括
远程
过程
调用
(RPC)和
远程
方法
调用
(RMI) 1.请求-应答协议 请求-应答协议描述了一个基于消息传递的范型,支持消息双向传输。 涉及三个通信原语 (1)doOperation:向指定的服务器发送请求消息。(2)getRequest:
远程
服务器获取客户端的请求。(3)sendReply:发送应答消息给客户端。 有三种...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章