码迷,mamicode.com
首页 > 其他好文 > 详细

服务端接收连接代码示例

时间:2020-06-07 12:38:01      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:关闭   new   管道   net   sea   space   sig   数据   监听端口   

#include <event2/event.h>
#include <event2/listener.h>
#include <string.h>
#include <iostream>
#include <signal.h>
#define SPORT 5001
using namespace std;

void listen_cb(struct evconnlistener * e, evutil_socket_t s, struct sockaddr *a, int socklen, void *arg)
{
    cout << "listen_cb.\n";
}
int main()
{

    //忽略管道破裂信号,发送数据给已关闭的socket,
    if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
        return 1;

    cout << "test server.\n";
    
    event_base * base = event_base_new();
    if (base)
    {
        cout << "event_base_new success.\n";
    }

    //监听端口
    //socket创建,bind,listen,绑定连接事件
    sockaddr_in sin;
    memset(&sin, 0, sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_port = htons(SPORT);

    evconnlistener * ev = evconnlistener_new_bind(base, //libevent上下文
            listen_cb, //新连接回调
            base,      //回调获取参数
            LEV_OPT_REUSEABLE|LEV_OPT_CLOSE_ON_FREE, //地址重用,evconnlistener关闭时关闭socket
            10, //连接队列长度
            (sockaddr*)&sin, //绑定的地址和端口
            sizeof(sin)
            );
    
    //事件分发处理
    if (base)
        event_base_dispatch(base);

    //清理
    if (ev)
        evconnlistener_free(ev);
    if (base)
        event_base_free(base);

    return 0;
}

 

服务端接收连接代码示例

标签:关闭   new   管道   net   sea   space   sig   数据   监听端口   

原文地址:https://www.cnblogs.com/orejia/p/13060110.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!