我玩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
有什么意义?是在什么时候完成一个写作,以及如何关闭你发送'东西'的连接?