Чтение ответа socks5

next40

Новичок
Чтение ответа socks5

Народ подкажите пожалуйста почему скрипт не хочет получить SMTP баннер виснет на чтении...... где ошибка ?
Поиск юзал, решения своей проблемы не нашел
PHP:
$fp = fsockopen("71.194.169.49", 4724, $errno, $errstr, 30);
//$msg = pack("CCC",5,1,0);
$msg = pack("CCCCa4n", 5, 1, 0, 1, gethostbyname("smtp.mail.ru"),25);
stream_set_timeout($fp, 10);
$put = fwrite($fp,$msg);
$buf ="";
  while (!feof($fp)) {
       $buf .= fgets($fp);
  }
   fclose($fp);
print "<pre>";
print_r($response = unpack("C*",$buf));
print "</pre>";
 

WP

^_^
Дык, feof вернет истину когда коннект оборвется, а так получается бесконечный цикл пока коннект не оборвался.

-~{}~ 17.07.06 11:49:

и еще. fgets->fread
 

next40

Новичок
Сделал так
PHP:
 while ($rep=fread($fp,1024)){
    $buf .= $rep;
  }
получаю ответ
Array
(
[1] => 5 // версия socks
[2] => 0 // успешно
)
Но это не то мне нужно получить ответ smtp на запрос чтобы знать могу ли дальше слать запросы или нет...
 

next40

Новичок
Дык что нуна добавить чтобы увидеть ответ smtp ?

-~{}~ 17.07.06 15:30:

переделал в другой вид
PHP:
$fp = pfsockopen("ip", 4475, $errno, $errstr, 30);
$buf["send"] = pack("CCC",5,1,0);
fwrite($fp,$buf["send"]);
stream_set_timeout($fp, 10);
$buf["recv"] = "";
 while ($rep=fread($fp,2)){
    $buf["recv"] .= $rep;
  }
  $responce = unpack("C*",$buf["recv"]);
  if($responce[1]=='5' && $responce[2]=='0'){return $fp;}else{return false;}
  $buff["send"] = pack("CCCCa4n", 5, 1, 0, 1, ip2long(gethostbyname("smtp.mail.ru")) , 25);
  fwrite($fp,$buff["send"]);
  $buff["recv"] = "";
           while ($buffer = fread($fp, 1024)) { 
            $buff["recv"] .= $buffer; 
			   $responce = unpack("C*", $buff["recv"]);
   print_r($buff["recv"]);
   }
fclose($fp);
Выводит пустую страницу .... =(
 
Сверху