调用WriteClient函数的作用是立即向客户端传送数据,它的第一个参数是要传的数据,第二个参数是第一个参数的大小(或者说从第一个参数中要传给用户的BYTE数),第三个不用管。所以按照你的意思来说的话,你应该定义一个变量,将你要添加的东西和你要传给客户的数据弄到这个变量中去(内存拷贝,字符串拷贝...随你便),然后求出变量的长度,最后将这个变量的和它的长度传给
WriteClient函数。
记住,这个函数传给客户的是原始数据(RAW DATA),它的作用主要是针对客户端有相应的客户端程序(ACTIVEX,或应用程序,或APPLET...),所以浏览器是不能正确接受到这种它们不识别的
数据的,除非你改变它们的MIME,让它们能接受你的数据,并且有你相应的浏览器器插件(或其它处理的升级方法)。
我不知道你所要知道的是不是这个。

解决方案 »

  1.   

    谢谢Neo_Matrix,我也喜欢黑客帝国:)
    我弄不清传给客户的页面数据在那里。我想在web服务器发送完客户所请求的页面后,再由我的程序添加一段javascript代码,以弹出一个对话框。以下是OnSendRawData的源程序:
    DWORD CFilterFilter::OnSendRawData(CHttpFilterContext* pCtxt,
    PHTTP_FILTER_RAW_DATA pRawData)
    {
    // TODO: React to this notification accordingly and
    // return the appropriate status code char ch[]="<script language='javascript'>\n alert('Hello world!');\n</script>\n";
    DWORD l=strlen(ch);
    pCtxt->WriteClient(ch,&l,0); return SF_STATUS_REQ_NEXT_NOTIFICATION;
    }
    其效果请看:http://202.108.49.161/
    我该如何实现呢?