当前位置: 技术问答>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