【问题标题】:how do you fix the clients outgoing port number using php?您如何使用 php 修复客户端的传出端口号?
【发布时间】:2010-01-04 17:07:29
【问题描述】:

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

【问题讨论】:

  • 当你说“修复”时,你的意思是保持不变吗?
  • 是的,保持不变是一种更好的描述方式。

标签: php sockets numbers port


【解决方案1】:

【讨论】:

  • 我尝试使用 file_get_contents,但这似乎没有返回 XML...我会再试一次,但在编写 stream_context_create 的选项时遇到问题...如果您能提供帮助,请参见下文跨度>
【解决方案2】:

在网络层面做一个基本的清单:

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

【讨论】:

  • 也许我很困惑......我想让客户端上的端口保持不变。如果我在第一篇文章中运行脚本,端口号从 2600 左右开始,每个连接增加 3,但连接仍然有效。另外我发现我没有使用 file_get_contents 得到响应,因此我按照第一个脚本使用了 fwrite() 和 fread() 并且它们有效,不知道这是否适用于 steam_context_create 。我会检查端口绑定是否以某种方式被禁用,但我仍然坚持结合两组 stream_context_create 选项。
  • 我不明白你为什么想要一个恒定的传出端口。 IP地址是有意义的。端口没那么多!我很难想象这样的场景会有用。我不确定是否可以在任何 TCP 堆栈中绑定到特定的传出端口。
  • 我要发送到的应用程序具有有限数量的连接,并且每次它从相同的 ip 但不同的端口接收到一些东西时都会创建一个新连接。我希望使端口保持不变并使用心跳保持连接活动......正如接收应用程序指定的那样。这不是端口的显示停止器不能保持不变,我可以将接收应用程序的超时设置为 1 秒或其他东西。如果做不到就没有问题!
猜你喜欢
  • 2016-05-01
  • 2011-01-19
  • 1970-01-01
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2016-04-19
  • 2018-05-05
相关资源
最近更新 更多