求支持HTTP代理用户访问的程序写法,感谢!
有如下一个程序,分为客户端和服务器端,客户端使用的是 client1: TIdTCPClient控件
客户端与服务器端交互的是如下一个结构体来传递信息,
RCommDataBlock:是定义的一个结构体:
PRCommDataBlock = ^RCommDataBlock;
RCommDataBlock = Record
Cmdtype : Integer;
cBuffer : Array[0..1024] of char;
dwBufSize : DWord;
cPar1: Array[0..19] of char;
end;
---------
客户端所有访问服务器的命令都是通过 RequestSv 函数来与服务器交换,获取返回值.
client1.host:=trim(ipstr); --服务器IP
client1.Port:=StrToInt(trim(portstr)); --我们指定的端口号
EType=Array[0..1024] of char;
function RequestSv(var cmdtype:integer;var buffer1:EType; var p1:string;var rsize:DWord):RCommDataBlock;
var
msg:RCommDataBlock;
begin
fillchar(msg,sizeof(msg),0);
msg.Cmdtype := cmdtype;
EType(msg.cBuffer):=buffer1;
LStrCpy(msg.cPar1,PChar(trim(p1)));
msg.dwBufSize:=rsize;
client1.WriteBuffer(msg,sizeof(msg)); //提交
fillchar(msg,sizeof(msg),0);
client1.ReadBuffer(msg,sizeof(msg)); //反馈
result:=msg;
end;
-----------
客户端通过这一函数向服务器发出信息并获取返回信息RCommDataBlock,在客户端程序里解析。
现在的问题是如果客户是通过HTTP代理服务器上网的,就无法通过我们指定的端口号来直接访问我们的服务器,
要把如上程序改成支持客户输入代理服务器的IP和端口验证名和密码,支持通过代理来访问我们服务器。这程序该怎么改呢?求详细点的程序,最好在以上程序上修改。