zoukankan      html  css  js  c++  java
  • 转:sock_ev——linux平台socket事件框架(基于数据报的测试程序) .

    上一篇已经做过注释,这一篇直接上代码

    /***************************************************************************************
    ****************************************************************************************
    * FILE      : server_test.cc
    * Description   : 
    *             
    * Copyright (c) 2012 by Liu Yanyun(E-mail:liuyun827@foxmail.com). All Rights Reserved.
    *            Without permission, shall not be used for any commercial purpose

    * History:
    * Version       Name            Date            Description
       0.1      Liu Yanyun      2012/12/03      Initial Version
       
    ****************************************************************************************
    ****************************************************************************************/ 
     
     
    #include "socket.h"  
    #include "log_trace.h"  
    #include "socket_addr.h"  
    #include "socket_base.h"  
    #include "event_loop.h"  
    #include <iostream>  
     
    using namespace std; 
     
    int main() 
    {  
      Socket *ser = Socket::create(); 
      bool ret = ser->open("dgram://unix.domain.ipc.1"); 
     
      char buf[100] = {0}; 
      char addr[128] = {0}; 
     
      ser->recv(buf, sizeof(buf), addr); 
     
      printf("from:%s;buf:%s ", addr, buf); 
       
      ser->send(buf, strlen(buf), addr); 
     
      Socket::destroy(ser); 
       
      return 0; 

    /***************************************************************************************
    ****************************************************************************************
    * FILE  : server_test.cc
    * Description :
    *    
    * Copyright (c) 2012 by Liu Yanyun(E-mail:liuyun827@foxmail.com). All Rights Reserved.
    *            Without permission, shall not be used for any commercial purpose
    *
    * History:
    * Version  Name         Date   Description
       0.1  Liu Yanyun  2012/12/03  Initial Version
      
    ****************************************************************************************
    ****************************************************************************************/


    #include "socket.h"
    #include "log_trace.h"
    #include "socket_addr.h"
    #include "socket_base.h"
    #include "event_loop.h"
    #include <iostream>

    using namespace std;

    int main()
    {
      Socket *ser = Socket::create();
      bool ret = ser->open("dgram://unix.domain.ipc.1");

      char buf[100] = {0};
      char addr[128] = {0};

      ser->recv(buf, sizeof(buf), addr);

      printf("from:%s;buf:%s ", addr, buf);
     
      ser->send(buf, strlen(buf), addr);

      Socket::destroy(ser);
     
      return 0;
    }

    /***************************************************************************************
    ****************************************************************************************
    * FILE      : client_test.cc
    * Description   : 
    *             
    * Copyright (c) 2012 by Liu Yanyun(E-mail:liuyun827@foxmail.com). All Rights Reserved.
    *            Without permission, shall not be used for any commercial purpose

    * History:
    * Version       Name            Date            Description
       0.1      Liu Yanyun      2012/12/03      Initial Version
       
    ****************************************************************************************
    ****************************************************************************************/ 
     
     
    #include "socket.h"  
    #include "log_trace.h"  
    #include "socket_addr.h"  
    #include "socket_base.h"  
    #include <iostream>  
     
    using namespace std; 
     
    int main() 

      Socket *clt = Socket::create(); 
      bool ret = clt->open("dgram://unix.domain.ipc.2"); 
      ret = ret; 
     
      char buf[100] = {"hello"}; 
      char addr[128] = {0}; 
     
      clt->send(buf, strlen(buf), "dgram://unix.domain.ipc.1"); 
     
      clt->recv(buf, sizeof(buf), addr); 
     
      printf("from:%s;buf:%s ", addr, buf); 
     
      sleep(2); 
       
      Socket::destroy(clt); 
       
      return 0; 

    起两个shell结果为:
    ./server_test
    from:dgram://unix.domain.ipc.2;buf:hello
     
    ./client_test
    from:dgram://unix.domain.ipc.1;buf:hello
     

    上面是使用unix域套接字进程测试;修改地址为ip:port形式可以转为inet域。

    对于数据包式的通信,只需要各自打开自身的地址,然后就可以根据地址收发数据了;而在上一篇中对于字节流方式服务器端要先打开进行监听,然后客户端去连接,服务器端接受连接以后才可以进行通信。

  • 相关阅读:
    第三十七节:系统证书管理和gRPC基于数字证书的认证和授权
    第三十六节:gRPC身份认证和授权(JWT模式 和 集成IDS4)
    第三十五节:gRPC拦截器、版本控制、安全性、日志集成
    第三十四节:.Proto文件剖析、gRPC的四种传输模式(一元和流式)和常用配置
    第三十三节:.Net Core下的gRPC详细介绍
    IIS7通过AppCmd.exe管理IIS
    MySql新增列的时候判断是否存在
    PowerDesigner从Excel导入表
    Java中Base64.encodeBase64URLSafe在C#的实现
    【产品方法论】字节跳动
  • 原文地址:https://www.cnblogs.com/skyofbitbit/p/3672869.html
Copyright © 2011-2022 走看看