Nebula2探秘09-IpcPeer(UDP)

2024-01-18 02:08
文章标签 udp 09 探秘 nebula2 ipcpeer

本文主要是介绍Nebula2探秘09-IpcPeer(UDP),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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探秘09-IpcPeer(UDP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617812

相关文章

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

09 生命周期

生命周期 beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestorydestoryed 辣子鸡:香辣入口,犹如吃了炫迈一样 - - - 根本停不下来 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport"

Learn ComputeShader 09 Night version lenses

这次将要制作一个类似夜视仪的效果 第一步就是要降低图像的分辨率, 这只需要将id.xy除上一个数字然后再乘上这个数字 可以根据下图理解,很明显通过这个操作在多个像素显示了相同的颜色,并且很多像素颜色被丢失了,自然就会有降低分辨率的效果 效果: 但是这样图像太锐利了,我们加入噪声去解决这个问题 [numthreads(8, 8, 1)]void CSMain(uint3 id

VC环境下window网络程序:UDP Socket程序

最近在学Windows网络编程,正好在做UDPsocket的程序,贴上来: 服务器框架函数:              socket();    bind();    recfrom();  sendto();  closesocket(); 客户机框架函数:            socket();      recfrom();  sendto();  closesocket();

Spring Boot 注解探秘:HTTP 请求的魅力之旅

在SpringBoot应用开发中,处理Http请求是一项基础且重要的任务。Spring Boot通过提供一系列丰富的注解极大地简化了这一过程,使得定义请求处理器和路由变得更加直观与便捷。这些注解不仅帮助开发者清晰地定义不同类型的HTTP请求如何被处理,同时也提升了代码的可读性和维护性。 一、@RequestMapping @RequestMapping用于将特定的HTTP请求映射到特定的方法上

9.7(UDP局域网多客户端聊天室)

服务器端 #include<myhead.h>#define SERIP "192.168.0.132"#define SERPORT 8888#define MAX 50//定义用户结构体typedef struct{struct sockaddr_in addr;int flag;}User;User users[MAX];//用户列表void add_user(struct s

【笔记】数据结构刷题09

快速排序 215. 数组中的第K个最大元素 class Solution {public:int findKthLargest(vector<int>& nums, int k) {return divide(nums,0,nums.size()-1,nums.size()-k);}int divide(vector<int>& nums,int left,int right,int k)

【SpringMVC学习09】SpringMVC中的拦截器

Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法。 1. springmvc拦截器的定义和配置 1.1 springmvc拦截器的定义 在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提供的