As nobody answer my question for a long time,
I try to solve the problem by adding a
event_base_loopbreak(base);
When BEV_EVENT_ERROR occurred.

Is it really the normal solution for such kind of problem?

在 12-4-14 上午11:23, "Dawen Rie" <dawenh...@126.com> 写入:

> I just write a simple client, and try to connect to a server which NOT
> running.
> libevent will trigger eventcb too times, the first time is BEV_EVENT_ERROR
> and the second time is BEV_EVENT_CONNECTED. Is there some wrong with me?
> 
> The code like following:
> 
> static void eventcb(struct bufferevent *bev, short events, void *ptr)
> {
>     if (events & BEV_EVENT_CONNECTED) {
> printf("Connected\n");
> //login(bev);
>     } else if (events & BEV_EVENT_ERROR) {
>     printf("NOT Connected\n");
>     }
> }
> static void readcb(struct bufferevent *bev, void *ctx)
> {
> }
> 
> 
> int main(int argc, char **argv)
> {
>     if (argc != 3) {
> printf("Usage: client <host> <port>\n");
> return 1;
>     }
> 
>     const char *host = argv[1];
>     int port = atoi(argv[2]);
> 
>     struct event_base *base = event_base_new();
>     if (!base) {
> printf("Couldn't open event base\n");
> return 1;
>     }
>     
>     struct bufferevent *bev = bufferevent_socket_new(base, -1,
> BEV_OPT_CLOSE_ON_FREE);
>     bufferevent_setcb(bev, readcb, NULL, eventcb, NULL);
>     bufferevent_enable(bev, EV_READ|EV_WRITE);
>     printf("Connecting to %s:%d\n", host, port);
>     if(bufferevent_socket_connect_hostname(bev, NULL, AF_INET, host, port)
> != 0)
>     {
>         printf("Connect host failed\n");
>         return 1;
>     }
>     
>     event_base_dispatch(base);
>     bufferevent_free(bev);
>     event_base_free(base);
>     return 0;
> }
> 
> 
> 
> ***********************************************************************
> To unsubscribe, send an e-mail to majord...@freehaven.net with
> unsubscribe libevent-users    in the body.
> 


Reply via email to