Nebula2探秘09-IpcPeer(UDP)
来源:互联网 发布:图形界面设计软件 编辑:程序博客网 时间:2024/05/16 15:30
Nebula2探秘09-IpcPeer(UDP)
happykevins文
Nebula2有内置了两种IPC(进程间通讯)的解决方案:IpcServer(UDP)和IpcPeer(TCP);下面一段代码展示如何使用Nebula2的IpcPeer。
/****************************************************************************/
/* Nebula2 - Tutorial 09 */
/* IpcPeer - Using UDP */
/* author: happykevins */
/****************************************************************************/
///----------------------------------------------------------------------------
/// +必要头文件
// nebula2 includes
#include "kernel/nkernelserver.h"
#include "kernel/nipcpeer.h"
/// -必要头文件
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +链接库
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "d_nkernel.lib")
/// -链接库
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +Application
int main(int argc, const char** argv)
{
/// 创建KernelServer
nKernelServer* ks = n_new(nKernelServer);
/// 启动网络模块
WSADATA wsaData;
int err = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
if ( err != 0 ) {
n_printf("无法启动网络模块!");
return 0;
}
/// 初始化两个Peer用于发送和接收数据
nIpcAddress addr1("self", 7111);
nIpcAddress addr2("self", 7222);
nIpcPeer peer1(&addr1, nIpcPeer::CanSend);
nIpcPeer peer2(&addr2, nIpcPeer::CanReceive);
/// 测试发送5条信息
for ( int i = 1; i <= 5; i++ )
{
nIpcBuffer send(256);
nIpcBuffer recv(256);
nIpcAddress from;
/// 发送信息
send.SetString("Hello Peer2! I'm Peer1!");
peer1.SendTo(addr2, send);
/// Sleep一段时间确保收到消息
n_sleep(3.0);
/// 接收消息
if ( peer2.ReceiveFrom(recv, from) )
{
if ( recv.IsValidString() )
{
n_printf("]Receive a Message from %s:%d ", from.GetHostName(), from.GetPortNum());
n_printf("]Message Content: %s ", recv.GetString());
}
}
}
/// 关闭网络模块
WSACleanup();
n_printf("按任意键退出...");
/// 销毁KernelServer
n_delete(ks);
getchar();
return 0;
}
/// -Application
///----------------------------------------------------------------------------
/* Nebula2 - Tutorial 09 */
/* IpcPeer - Using UDP */
/* author: happykevins */
/****************************************************************************/
///----------------------------------------------------------------------------
/// +必要头文件
// nebula2 includes
#include "kernel/nkernelserver.h"
#include "kernel/nipcpeer.h"
/// -必要头文件
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +链接库
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "d_nkernel.lib")
/// -链接库
///----------------------------------------------------------------------------
///----------------------------------------------------------------------------
/// +Application
int main(int argc, const char** argv)
{
/// 创建KernelServer
nKernelServer* ks = n_new(nKernelServer);
/// 启动网络模块
WSADATA wsaData;
int err = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
if ( err != 0 ) {
n_printf("无法启动网络模块!");
return 0;
}
/// 初始化两个Peer用于发送和接收数据
nIpcAddress addr1("self", 7111);
nIpcAddress addr2("self", 7222);
nIpcPeer peer1(&addr1, nIpcPeer::CanSend);
nIpcPeer peer2(&addr2, nIpcPeer::CanReceive);
/// 测试发送5条信息
for ( int i = 1; i <= 5; i++ )
{
nIpcBuffer send(256);
nIpcBuffer recv(256);
nIpcAddress from;
/// 发送信息
send.SetString("Hello Peer2! I'm Peer1!");
peer1.SendTo(addr2, send);
/// Sleep一段时间确保收到消息
n_sleep(3.0);
/// 接收消息
if ( peer2.ReceiveFrom(recv, from) )
{
if ( recv.IsValidString() )
{
n_printf("]Receive a Message from %s:%d ", from.GetHostName(), from.GetPortNum());
n_printf("]Message Content: %s ", recv.GetString());
}
}
}
/// 关闭网络模块
WSACleanup();
n_printf("按任意键退出...");
/// 销毁KernelServer
n_delete(ks);
getchar();
return 0;
}
/// -Application
///----------------------------------------------------------------------------
- Nebula2探秘09-IpcPeer(UDP)
- Nebula2探秘09-IpcPeer(UDP)
- Nebula2探秘09-IpcPeer(UDP)
- Nebula2探秘09-IpcPeer(UDP)
- Nebula2探秘05-RTTI
- Nebula2探秘05-RTTI
- Nebula2探秘05-RTTI
- Nebula2探秘序章:Nebula2环境配置
- Nebula2探秘序章:Nebula2环境配置
- Nebula2探秘序章:Nebula2环境配置
- Nebula2探秘序章:Nebula2环境配置
- Nebula2探秘11-Simple Window
- Nebula2探秘10-Signal System
- Nebula2探秘02-使用FileServer2
- Nebula2探秘11-Simple Window
- Nebula2探秘10-Signal System
- Nebula2探秘02-使用FileServer2
- Nebula2探秘11-Simple Window
- j2ee 13种核心技术
- 教案:转换课程第3章表单验证及相关特效
- My favorite Winamp Skin铪铪
- EasyDBO-0.9.1版发布
- Windows NT/2000服务器优化
- Nebula2探秘09-IpcPeer(UDP)
- Question About Compile Xvid_Bench Please
- 存储过程、复杂SQL语句、ORM的陷阱
- 《给初学者的Windows Vista的补遗手册》之061
- 好书共享: 《感受微软:比尔.盖茨的12个小秘密》
- CSDN Windows专区 FAQ Build Feb162005
- 开源2007,我们来了
- Windows XP优化设置之网络篇
- 插件系统框架分析