0

如何让 gwan 对某些请求不发送回复,即在不构建和发送回复的情况下让 servlet 静默关闭?

减少从服务器端传出的带宽很有用。

仅用于收集数据,无需对客户端做出任何响应。

4

2 回答 2

0

你可以用 gwan 做到这一点connection handler

我认为这是您需要在处理程序上捕获的事件。由于您希望 servlet 运行,然后关闭连接。

HDL_BEFORE_WRITE, // after a reply was built, but before it is sent

这是一个示例代码connection handler。您仍然需要添加过滤器。此代码将在构建回复后关闭所有请求。

int init(int argc, char *argv[])
{ 
   u32 *states = (u32*)get_env(argv, US_HANDLER_STATES);
   *states =  (1 << HDL_BEFORE_WRITE)
}

int main(int argc, char *argv[])
{
    long state = (long)argv[0];
    if(state == HDL_BEFORE_WRITE)
    {
        return 0; // Close connection
    }
    return(255); // continue G-WAN's default execution path
}
于 2012-11-08T15:24:02.847 回答
0

您还可以通过执行类似(未经测试)的操作来关闭来自 servlet 的连接:

#include <sys/socket.h>

char buf[1024];
int s = (int)get_env(argv, CLIENT_SOCKET);
shutdown(s, SHUT_WR);
while(read(s, buf, sizeof(buf)) > 0);
close(s);
return 500;

然后像上面那样返回 500 之类的东西,这样你就不必建立回复了。

于 2012-11-08T16:39:25.297 回答