• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            New libevent: dns and http support

            from:http://unx.ca/log/2006/10/17/new-libevent-dns-and-http-support/

            Last night Niels Provos announced the release of libevent 1.2. It comes with 2 new and useful features:

            • Non-blocking DNS resolution: previously you had to write your own, hunt down someone elses or uses threads to prevent DNS lookups from blocking your app. This came just at the right time for me as I was about to integrate someone elses non-blocking solution into my app.
            • Support for simple HTTP clients and servers: At first thought this may seem like unneeded bloat, and to many it might. I usually work on applications that lack a user interface and sometimes a simple http interface is very useful for debugging, or quickly adding some extra control to your application. This might even been robust enough to add a basic webservices like API to your application.

            Non-blocking DNS example:

            #include <sys/types.h>
            #include <sys/time.h>
            /* For inet_ntoa. */
            #include <sys/socket.h>
            #include <netinet/in.h>
            #include <arpa/inet.h>
            #include <stdlib.h>
            #include <stdio.h>
            #include <stdint.h>
            #include <event.h>
            #include <evdns.h>
            void
            usage(void)
            {
            fprintf(stderr, “USAGE: evdns-demo <hostname>n”);
            exit(1);
            }
            void
            evdns_cb(int result, char type, int count, int ttl, void *addresses, void *arg)
            {
            struct in_addr *addrs = addresses;
            int i;
            if (result != 0) {
            printf(“Error looking up address.n”);
            exit(1);
            }
            else {
            for (i = 0; i < count; i++) {
            printf(“%sn”, inet_ntoa(addrs[i]));
            }
            exit(0);
            }
            }
            int
            main(int argc, char **argv)
            {
            if (argc != 2)
            usage();
            event_init();
            evdns_init();
            evdns_resolve_ipv4(argv[1], 0, evdns_cb, NULL);
            event_dispatch();
            return (0);
            }
            

            http server example

            #include <sys/types.h>
            #include <sys/time.h>
            #include <stdlib.h>
            #include <err.h>
            #include <event.h>
            #include <evhttp.h>
            void
            root_handler(struct evhttp_request *req, void *arg)
            {
            struct evbuffer *buf;
            buf = evbuffer_new();
            if (buf == NULL)
            err(1, “failed to create response buffer”);
            evbuffer_add_printf(buf, “Hello World!n”);
            evhttp_send_reply(req, HTTP_OK, “OK”, buf);
            }
            void
            generic_handler(struct evhttp_request *req, void *arg)
            {
            struct evbuffer *buf;
            buf = evbuffer_new();
            if (buf == NULL)
            err(1, “failed to create response buffer”);
            evbuffer_add_printf(buf, “Requested: %sn”, evhttp_request_uri(req));
            evhttp_send_reply(req, HTTP_OK, “OK”, buf);
            }
            int
            main(int argc, char **argv)
            {
            struct evhttp *httpd;
            event_init();
            httpd = evhttp_start(“0.0.0.0″, 8080);
            /* Set a callback for requests to “/”. */
            evhttp_set_cb(httpd, “/”, root_handler, NULL);
            /* Set a callback for all other requests. */
            evhttp_set_gencb(httpd, generic_handler, NULL);
            event_dispatch();
            /* Not reached in this code as it is now. */
            evhttp_free(httpd);
            return 0;
            }
            

            posted on 2007-08-21 01:27 楊粼波 閱讀(615) 評論(0)  編輯 收藏 引用

            久久综合给合久久狠狠狠97色69| 成人免费网站久久久| 亚洲精品成人久久久| 午夜天堂av天堂久久久| 99久久精品免费看国产免费| 国内精品九九久久精品| 天天爽天天爽天天片a久久网| 久久久国产亚洲精品| 久久精品国产亚洲沈樵| 久久天天婷婷五月俺也去| 一本伊大人香蕉久久网手机| 欧洲性大片xxxxx久久久| 青青青青久久精品国产| 色诱久久久久综合网ywww| 要久久爱在线免费观看| 99久久婷婷国产一区二区| 7777精品久久久大香线蕉| 久久综合视频网站| 国产叼嘿久久精品久久| 久久91精品国产91久久小草| 伊人色综合久久天天人手人婷| 久久亚洲国产成人精品无码区| 热99re久久国超精品首页| 久久婷婷五月综合国产尤物app| 尹人香蕉久久99天天拍| 久久精品国产亚洲av瑜伽| 狠狠色丁香婷综合久久| 久久av无码专区亚洲av桃花岛| 欧美亚洲国产精品久久| 久久笫一福利免费导航 | 久久精品久久久久观看99水蜜桃 | 久久人人爽人人爽人人片av麻烦| 91精品国产综合久久香蕉 | 欧美久久久久久午夜精品| 国产精品伊人久久伊人电影| 久久天堂电影网| 久久精品草草草| 国产精品日韩深夜福利久久| 韩国三级中文字幕hd久久精品| 久久精品国产亚洲AV不卡| 亚洲午夜久久久|