当前位置: 首页 > 面试题库 >

如何使用PHP ping服务器端口?

龚志
2023-03-14
问题内容

我想要一个PHP脚本,它允许您ping IP地址和端口号(ip:port)。我找到了类似的脚本,但是它仅适用于网站,而不适用于ip:port

<?php

function ping($host, $port, $timeout) 
{ 
  $tB = microtime(true); 
  $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
  if (!$fP) { return "down"; } 
  $tA = microtime(true); 
  return round((($tA - $tB) * 1000), 0)." ms"; 
}

//Echoing it will display the ping if the host is up, if not it'll say "down".
echo ping("www.html" target="_blank">google.com", 80, 10);

?>

我想要一个游戏服务器。

这个想法是我可以输入IP地址和端口号,然后得到ping响应。


问题答案:

我认为这个问题的答案几乎可以概括您的问题。

如果您要查找给定主机是否将在端口80上接受TCP连接,则可以执行以下操作:

$host = '193.33.186.70';
$port = 80;
$waitTimeoutInSeconds = 1;
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){  
   // It worked
} else {
   // It didn't work
}
 fclose($fp);

对于TCP以外的任何其他东西,都会更加困难(尽管由于您指定了80,所以我想您正在寻找活动的HTTP服务器,所以TCP是您想要的)。TCP已排序并得到确认,因此成功建立连接后,您将隐式接收返回的数据包。大多数其他传输协议(通常是UDP,但也有其他传输协议)不会以这种方式运行,除非覆盖的应用层协议实现了数据报,否则不会确认数据报。
你要求以这种方式这个问题的事实告诉我,你有你的知识的根本差距传输层协议。您应该阅读ICMP和TCP以及OSI模型。

另外,这是对主机ping 的较干净的版本。

// Function to check response time
function pingDomain($domain){
    $starttime = microtime(true);
    $file      = fsockopen ($domain, 80, $errno, $errstr, 10);
    $stoptime  = microtime(true);
    $status    = 0;

    if (!$file) $status = -1;  // Site is down
    else {
        fclose($file);
        $status = ($stoptime - $starttime) * 1000;
        $status = floor($status);
    }
    return $status;
}


 类似资料:
  • 问题内容: 收到以下错误: TypeError:Object.values不是函数。 从这个对计算器的问题-我看是不是在所有的浏览器都支持。 但是我在服务器端的Node.js中使用该功能-如何在Node.js中使用它看起来如此直观? 问题答案: 是ES2017中的新功能。这是非常出血的边缘。从7.0版开始,Node.js完全支持它。 6.8.1支持它,但是它被认为是不稳定的并且被锁定在标志后面。

  • 我试图使用setBlock命令来放置我的小键盘的活动(给出红石电源)版本,如果你在小键盘GUI中键入的代码是正确的。我将要向您展示的代码在客户端(单人游戏)端工作得很好,但在服务器(多人游戏)端却不行。代码如下: BlockKeypad“在BlockActivated上” } GuikePad代码: 在服务器控制台中: 有人知道怎么了吗?我将非常感谢任何帮助,因为这是唯一的事情阻止我发布多人兼容版

  • 在开发阶段,在页面中嵌入一个 Less.js 将Less在线编译成CSS样式,确实很方便。但是,在线编译会产生加载延迟,即便在浏览器中有不足一秒的加载延迟,也会降低性能。如果Javascrip执行错误,还会引起美观问题。因此,在生产环境中,并不推荐这种方式,而是推荐在服务器端使用Less。 在服务器端使用Less,需要借助于 Less 的编译器,由它将 Less 源文件编译成最终的 CSS 文件。

  • 我正在使用收集器跟踪java服务中的跨度,这一服务是http和grpc。收集器终结点是localhost:55680。此java服务跟踪成功。 现在,我想使用这个收集器基于gRPC跟踪我的go服务。 在我的go服务中,我复制以下文件:interceptor。去grpctrace。从repo opentelemetry转到contrib,这里https://github.com/open-telem

  • 问题内容: 因此,已经有一个必须在控制台上运行的Python程序设置了。我将使用Javascript为应用程序构建Web GUI界面。我将如何: 一种。开始处理此Python程序的输入/输出,而无需触摸原始代码。 b。通过Javascript调用将控制台输入发送到Python程序。我已经研究了原始的HTTP请求/ AJAX,但不确定如何将其作为输入发送到Python程序。 问题答案: 一种。处理程

  • 给定一个使用Nestjs的MEVN堆栈,MongoDB(mongoose)我正在设置服务器端分页。我的方法是使用mongoose-aggregate-paginate-v2,但我无法从我的研究1中提取出我需要的内容,以便在Nestjs(typescript)和mongoose的框架内完成这项工作。谢谢你的帮助。。 在有关 Nestjs 猫鼬模型和猫鼬聚合分页 v2 设置的文档之后,我有以下内容: