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
