【发布时间】:2015-07-12 21:51:39
【问题描述】:
我正在使用 Libevent 作为服务器,但遇到了问题
基本上我使用的是本页底部的示例,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 continue。我可以忽略这一点,但宁愿不这样做。
这就是我的写回调:
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 有什么意义?是在您完成写入以及关闭您发送“东西”的连接时吗?
【问题讨论】:
标签: libevent