你如何使用PHP修复客户端传出端口号?

时间:2010-01-04 17:07:30

标签: php sockets numbers port

我正在使用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 :(得分:0)

答案 1 :(得分:0)

在网络级别上执行基本检查清单:

  • 服务器上的实际接口上有192.9.2.60 IP吗?
  • 是否存在影响它的路由或防火墙规则?在Linux中尝试``ip route get x.x.x.x src 192.9.2.60''和iptables -L
  • 是否有其他设置(例如SELinux)干扰PHP绑定到高端口?
  • 运行嗅探器并查看服务器响应实际显示的内容