Нужно подключиться к серверу через прокси. Вот, что написал(в соотв. с RFC) :
| Код | var wData: WSAData; S: TSocket; addr: sockaddr_in; SendBuff: String; buff: array[1..1024] of char; proxy_port, proxy_host, host: string; begin Proxy_host:='127.0.0.1'; Proxy_port:=1080; Host:='site.com'; If WSAStartUp($0101, wData) <> 0 then begin MessageDLG('winsock library not found.',mtError,[mbOK],0); exit; end; s:= Socket(AF_INET, Sock_STREAM, ipPROTO_TCP); If S = Invalid_Socket then begin ShowMessage('socket error#'+IntToStr(WSAGetLastError)); CloseSocket(s); Exit; end; FillChar(addr, sizeOF(sockaddr_in),0); Addr.sin_family:=af_INET; Addr.sin_port:=hTons(Proxy_port); Addr.sin_addr.S_addr:=Inet_ADDR(Proxy_host); Connect(s, addr, SizeOf(TSockAddr)); SendBuff:=#5#1#0; send(s, SendBuff[1], 3, 0); recv(s, buff, 2, 0); If (buff[1] <> #5) or (buff[2] <> #0) then begin ShowMessage('Connect error!'); exit; end; SendBuff:=#5#1#0#3+chr(length(host))+host+chr(proxy_port div 256)+ char(proxy_port mod 256); send(s, SendBuff[1], Length(SendBuff), 0); recv(s, buff, SizeOf(Buff), 0); if (buff[1] <> #5) or (buff[2] <> #0) then Memo1.Text:='connect!' else Memo1.Text:='failed!'; CloseSocket(s); ShutDown(s, SD_BOTH); WSACleanUp;
|
Но всё запарывается уже на первом пункте. Если кто знает где ошибка, помогите пожалуйста. |