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域。

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

  • 相关阅读:
    P1271 【深基9.例1】选举学生会(基数排序)
    P7076 [CSP-S2020] 动物园
    #10127. 「一本通 4.3 练习 1」最大数
    P2671 [NOIP2015 普及组] 求和
    P3369 【模板】普通平衡树
    P2503 [HAOI2006]均分数据
    P2846 [USACO08NOV]Light Switching G(动态开点写法)
    P6278 [USACO20OPEN]Haircut G
    P2341 [USACO03FALL][HAOI2006]受欢迎的牛 G
    P1012 [NOIP1998 提高组] 拼数
  • 原文地址:https://www.cnblogs.com/skyofbitbit/p/3672869.html
Copyright © 2011-2022 走看看