как вы исправляете номер исходящего порта клиента с помощью php? - PullRequest
0 голосов
/ 04 января 2010

Я использую php (расширение сокетов) для обработки отправки и получения XML-файлов.Я хотел бы иметь возможность исправить номер порта исходящих клиентов, так как сервер имеет установленное количество входящих соединений.Я обнаружил, что каждый раз, когда запускается скрипт php, он создает новый номер порта.У меня есть сценарий на стороне клиента: -



send_message('192.9.2.50','10220',$xmlCmd->asXML());

function send_message($ipaddr, $port, $msg)
{
  $fp = stream_socket_client("tcp://".$ipaddr.":".$port, $errno, $errstr);

  if (!$fp)
  {
    echo "ERR : $errno - $errstr";
  }
  else
  {
    fwrite($fp,$msg);
    $response = fread($fp,1024);
    // Make a SimpleXML object from the response
    $xml = new SimpleXMLElement($response);

    echo $xml->Channel->Air->Index;

    fclose($fp);
  }
}


Обновление:

Я попытаюсь снова использовать file_get_contents, но, похоже, xml только передается от клиента к серверу, т.е. не отвечает,Может ли кто-нибудь помочь мне с параметрами stream_context_create, мне нужно объединить эти два, но не могу понять, как это правильно.Код: -


    $opts = array('http' => 
      array( 'method'  => 'POST',
        'header'  => 'Content-type: text/xml;',
        'content' => $msg)                             
    );
//combine with these options

$opts = array('socket'=>array('bindto'=>"192.9.2.60:2800"));

Ответы [ 2 ]

0 голосов
/ 05 января 2010

Сделать базовый контрольный список на уровне сети:

  • Является ли 192.9.2.60 IP-адресом фактического интерфейса на сервере?
  • Существуют ли какие-либо правила маршрутизации или брандмауэра, которые влияют на это? В Linux попробуйте `` ip route get x.x.x.x src 192.9.2.60 '' и iptables -L
  • Существуют ли другие настройки (например, SELinux), которые мешают PHP связываться с высокими портами?
  • Запустите сниффер и посмотрите, что на самом деле говорит серверный ответ
0 голосов
/ 04 января 2010
...