我玩LIBEVENT作爲服務器,我有一個問題LIBEVENT 2 - 寫回調/無限循環
基本上我使用在本頁面底部的例子,http://www.wangafu.net/~nickm/libevent-book/Ref6_bufferevent.html: 我有main/accept/readcb
運行良好 - 但是試圖瞭解writecb
。
在我走得更遠之前,我想確保我有這個正確的。
當客戶端發送(curl in this instance
)發送一些JSON
,這就是所謂的read_callback
,當我要回寫到curl
我用的是write_callback
。
這個問題我簡而言之,當我用json
來捲曲時。它要求服務器在發送JSON
之前發送http/1.1 100繼續。我可以忽略它,但寧可不。
所以這是我爲我寫的回調:
void writecb(struct bufferevent *bev, void *ctx){
struct evbuffer *tmp = evbuffer_new();
evbuffer_add_printf(tmp, "HTTP/1.1 100 Continue\r\n\r\n");
bufferevent_write_buffer(bev, tmp);
evbuffer_free(tmp);
printf("finish sending data back to client!\n");
}
會發生什麼事,當我做一個curl
的說法是:
curl -vv -H "Content-Type: application/json" --data @test.json http://localhost:40714
在控制檯上有一個無限循環。
但是,如果我把這個代碼放在readcb
之內,它就像一個魅力。所以我的問題,writecb
有什麼意義?是在什麼時候完成一個寫作,以及如何關閉你發送'東西'的連接?