Connection broken will cause a read event on your socket. So when stdin_cb was 
called, you should try recv() on your sock_fd, check the return value of recv().



At 2011-10-13 14:12:00,"sai koushik" <[email protected]> wrote:

Hi ,


i tried to crate a socket client using  libev , and this client has to listen 
for data from the server.
and i tried as below
        ev_io stdin_watcher;
        ....
        sock_fd = socket(PF_UNIX, SOCK_STREAM, 0);
        memset(&addr, 0, sizeof(addr));
        addr.sun_family = AF_UNIX;
        strcpy(addr.sun_path, ifname);
        err = connect(sock_fd, (struct sockaddr *) &addr, sizeof(addr));
        int flags=0;
        fcntl(sock_fd, F_SETFL, flags | O_NONBLOCK);
        ev_io_init(&stdin_watcher,stdin_cb, sock_fd, EV_READ);
        ev_io_start (EV_DEFAULT_UC_ &stdin_watcher);
        ....


and callback is 
    static void stdin_cb (EV_P_ ev_io *w, int revents)
    {
        printf("\n callback \n");
    }
    
issue is when i tried to run client program callback is getting invoked forever 
and it is going into infinte loop.


i didn`t used ev_loop.
Is above code is in proper way of reading data from from server?


any help?


Thanks

_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to