libevent java_libevent使用简单示例

#include

#include

#include

#include

#include

#include

#include

#define TRACE_INT(v,fmt,args...) do {\

if(v < 0) {\

fprintf(stderr,fmt"\n",##args);\

return -1;\

}\

}while(0)

#define TRACE_POT(v,fmt,args...) do {\

if(v == NULL) {\

fprintf(stderr,fmt"\n",##args);\

return -1;\

}\

}while(0)

int32_t DEFAULT_LISTEN_PORT = 7123;

int32_t DEFAULT_LISTEN_SIZE = 100;

int32_t g_listen_port;

int32_t g_listen_size;

struct event_base *g_event_base;

void init_server_data()

{

g_listen_port = DEFAULT_LISTEN_PORT;

g_listen_size = DEFAULT_LISTEN_SIZE;

}

int init_server_socket(int32_t listen_port,int32_t listen_size)

{

int listen_fd ;

int on = 1;

int err = 0;

listen_fd = my_tcplisten(listen_port,listen_size);

TRACE_INT(listen_fd,"open tcp listen fail");

err = setsockopt(listen_fd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));

TRACE_INT(err,"setsockopt reuse address fail");

err = setsockopt(listen_fd,IPPROTO_TCP,TCP_NODELAY,&on,sizeof(on));

TRACE_INT(err,"setsockopt nodelay fail");

return listen_fd;

}

void server_loop(int listen_fd,short,void *)

{

char buf[100];

int cli_fd = my_accept(listen_fd,NULL,NULL);

if(read(cli_fd,buf,sizeof(buf))!=0)

{

fprintf(stdout,"%s\n",buf);

}

close(cli_fd);

return ;

}

int main()

{

int32_t socket_fd = 0;

init_server_data();

socket_fd = init_server_socket(g_listen_port,g_listen_size);

fprintf(stdout,"socket fd is %d\n",socket_fd);

g_event_base = event_base_new();

TRACE_POT(g_event_base,"new event base fail");

struct event listen_event;

event_set(&listen_event,socket_fd,EV_READ|EV_PERSIST,server_loop,NULL);

event_base_set(g_event_base,&listen_event);

event_add(&listen_event,NULL);

event_base_dispatch(g_event_base);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值