当前位置:  技术问答>linux和unix

问一个关于libevent的问题

    来源: 互联网  发布时间:2017-04-13

    本文导语:      我想用libevent制作一个客户端,让它和服务器保持长连接,并进行读写操作,结果在connect完成之后(回调eventcb,返回BEV_EVENT_CONNECTED),event_base_dispatch就结束事件循环了。     请教大家,我要怎么做才能让该...

    我想用libevent制作一个客户端,让它和服务器保持长连接,并进行读写操作,结果在connect完成之后(回调eventcb,返回BEV_EVENT_CONNECTED),event_base_dispatch就结束事件循环了。
    请教大家,我要怎么做才能让该客户端程序与服务器保持长连接呢?(进行读写操作)

上测试代码:
#include 
#include 
#include 
#include 
#include 
#include 

void error_quit(const char *str)
{
perror(str);
exit(1);
}

void eventcb(struct bufferevent *bev, short events, void *ptr)
{
printf("close: %Xn", events);
}

void readcb(struct bufferevent *bev, void *ptr)
{
//printf("read: %sn", strerror(errno));
}

void writecb(struct bufferevent *bev, void *ptr)
{
//printf("write: %sn", strerror(errno));
}

int main(void)
{
struct event_base *base;
struct bufferevent *bev;
struct sockaddr_in servaddr;
int res;

base = event_base_new();

memset(&servaddr, 0, sizeof(servaddr));    
servaddr.sin_family = AF_INET;    
servaddr.sin_port = htons(8877);    
res = inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);  
if( res != 1 )
error_quit("inet_pton error");   

bev = bufferevent_socket_new(base, -1, BEV_OPT_CLOSE_ON_FREE);
res = bufferevent_socket_connect(bev,
(struct sockaddr *)&servaddr, sizeof(servaddr));
if ( res 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为Qt添加libev的高性能事件循环 qt_eventdispatcher_libev
  • 为Qt添加libevent的高性能事件循环 qt_eventdispatcher_libevent
  • 异步事件处理库 libevent
  • 网络库 libev
  • 求教libevent的难题
  • 谁能解释一下epoll、libevent、zeroMQ的区别?
  • libevent库大家用过吗
  • Linux 下libevent如何实现高并发处理的?
  • 想用libevent库写个服务器程序,但是需要访问数据库,会很费时间,该如何处理。
  • libevent编程error: expected specifier-qualifier-list before ‘TAILQ_ENTRY’···
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • unix下部署libevent
  • libevent库的使用方法实例
  • libevent库的使用--定时器的使用实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,