chcę napisać maly serwer proxy i napisałem cos takiego (wszystko działa tzn dostaję nagłówek http itd ale gdy próbuje odpowiedzieć klientowi wyrzuca błąd że nie może wysłać- może ktos wie jak odpowiedzieć (w ponizszym kodzie forum usunęło backslashe z niektórych znaków specjalnych)?):
<?php
$addr = my_ip();
$local_port=80;
function my_ip($dest='64.0.0.0', $port=80)
{
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_connect($socket, $dest, $port);
socket_getsockname($socket, $addr, $port);
socket_close($socket);
return $addr;
}
while(1){
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,NULL,80);
socket_listen($socket);
$conn = false;
switch(socket_select
($r = array($socket), $w = array($socket), $e = array($socket), 60
)) { case 2:
break;
case 1:
$conn = socket_accept($socket);
break;
case 0:
break;
}
if ($conn !== false) {
$buffer="";
$buffer1="";
while($buffer=socket_read($conn,512,PHP_BINARY_READ)){
$buffer1.=$buffer;
}
$buffer=$buffer1;
preg_match("@s*([POST|GET])s*(http[^s]*).*@si",$buffer,$address);
$address=$address[2];
$method="POST";
$method="GET";
}
$address.$method;
if($method=="GET"){
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiejar21"."");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiejar21"."");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 15);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
@curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_URL,$url=$address);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 25);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$echo = curl_exec($ch);
$zm='HTTP/1.0 200 OKrnCache-Control: privaternContent-Type: text/html; charset=ISO-8859-2rnProxy-Connection: closernrn';
$addr1="";
$port1="";
socket_getpeername ($conn,&$addr1,&$port1);
$buf = $zm.$echo;
socket_connect($socket, $addr1, (int)$port1);
socket_write($socket,$buf,$len);
}elseif($method=="POST"){
}else{
}
}
socket_close($socket);
}
?>
Nikt nie wie jak to zrobić ?
Ten post edytował lopez86 29.07.2007, 02:01:51
c++ , javascript , PHP , SQL , MYSQL , CSS - wszystko czego potrzebuje prawdziwy mężczyzna LoL