0

我正在使用 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"));
4

2 回答 2

0

http://ilia.ws/archives/51-PHP-bind-support-via-stream-context.html

于 2010-01-04T17:29:32.700 回答
0

在网络级别做一个基本的清单:

  • 192.9.2.60 是服务器实际接口上的 IP 吗?
  • 是否有任何影响它的路由或防火墙规则?在 Linux 中尝试 ``ip route get xxxx src 192.9.2.60'' 和 iptables -L
  • 是否有任何其他设置(例如 SELinux)会干扰 PHP 绑定到高端口?
  • 运行嗅探器并查看服务器响应的实际内容
于 2010-01-05T11:05:04.013 回答