• <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 .

            Network Programming Using Libevent - (III)

            from:http://blog.gslin.info/2005/11/network-programming-using-libevent-iii.html

            這次要談的跟 Network Programming 沒有直接的關(guān)係。

            在寫 Nonblocking Network Program 通常要處理 Buffering 的問題,但並不好寫,主要是因為 read()recv() 不保證可以一次讀到一行的份量進(jìn)來。

            libevent 裡面提供相當(dāng)不錯的 Buffer Library 可以用,完整的說明在 man event 的時候可以看到,最常用的應(yīng)該就是以 evbuffer_add()evbuffer_readline() 這兩個 Function,其他的知道存在就可以了,需要的時候再去看詳細(xì)的用法。

            下面直接提供 libevent-buff.c 當(dāng)作範(fàn)例,編譯後看執(zhí)行結(jié)果,再回頭來看 source code 應(yīng)該就有感覺了:

             


            #include <sys/time.h>
            #include <event.h>
            #include <stdio.h>

            void printbuf(struct evbuffer *evbuf)
            {
            for (;;) {
            char *buf = evbuffer_readline(evbuf);
            printf("* buf = %p, the string = \"\e[1;33m%s\e[m\"\n", buf, buf);
            if (buf == NULL)
            break;
            free(buf);
            }
            }

            int main(void)
            {
            struct evbuffer *evbuf;

            evbuf = evbuffer_new();
            if (evbuf == NULL) {
            fprintf(stderr, "%s(): evbuffer_new() failed.\n", __func__);
            exit(1);
            }

            /* Add "gslin" into buffer. */
            u_char *buf1 = "gslin";
            printf("* Add \"\e[1;33m%s\e[m\".\n", buf1);
            evbuffer_add(evbuf, buf1, strlen(buf1));
            printbuf(evbuf);

            u_char *buf2 = " is reading.\nAnd he is at home.\nLast.";
            printf("* Add \"\e[1;33m%s\e[m\".\n", buf2);
            evbuffer_add(evbuf, buf2, strlen(buf2));
            printbuf(evbuf);

            evbuffer_free(evbuf);
            }

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


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            激情五月综合综合久久69| 久久久国产精华液| 欧美精品九九99久久在观看| 9999国产精品欧美久久久久久| 亚洲中文久久精品无码ww16| 亚洲欧美一级久久精品| 久久综合给合综合久久| 亚洲欧洲精品成人久久曰影片 | 久久精品国产亚洲麻豆| 久久久久无码精品国产不卡| 无码人妻久久一区二区三区免费 | 国产精品亚洲美女久久久| 青青青国产成人久久111网站| 国产精品久久久久久一区二区三区| 久久久久久亚洲AV无码专区| 国产精品久久久久久| 亚洲国产二区三区久久| 久久se精品一区二区影院| 无码8090精品久久一区| 久久精品中文无码资源站| 亚洲熟妇无码另类久久久| 99国产精品久久久久久久成人热| 老司机国内精品久久久久| 久久精品国产亚洲av瑜伽| 久久久久久精品无码人妻| 久久久久亚洲AV无码专区体验| 久久综合久久综合久久| 欧美久久一区二区三区| 欧美va久久久噜噜噜久久| 97久久精品人人做人人爽| 中文成人无码精品久久久不卡| 老色鬼久久亚洲AV综合| 伊人色综合久久天天| 97精品伊人久久大香线蕉| 波多野结衣中文字幕久久 | 伊人久久大香线蕉综合网站| 无码久久精品国产亚洲Av影片| 精品久久久久久国产三级| 人妻精品久久久久中文字幕69| 久久国产香蕉视频| 国产精品一区二区久久|