我使用以下内容来获取和IP或域名的状态
<?php
system('ping -c1 -w1 193.33.186.70') ;
?>我如何ping 80端口?一旦提供port,则根本不返回任何内容。尝试通过':80‘和’80‘将其添加到末尾
任何想法都值得一提!
发布于 2011-10-18 07:19:47
如果您想要做的是找出给定的主机是否接受端口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,但也有其他协议)不会以这种方式工作,除非重叠的应用层协议实现了数据报,否则数据报不会得到确认。
您以这种方式提出这个问题的事实告诉我,您在Transport Layer协议方面的知识存在根本性的差距。您应该阅读有关ICMP和TCP以及OSI Model的信息。
发布于 2011-10-18 07:15:34
Ping命令使用的不是TCP协议,而是ICMP协议。因此您不能使用TCP端口80。
您可以使用fsockopen()或cURL ping服务器,使用gethostbyaddr()获取域名。
发布于 2011-10-18 07:14:05
通常,您不能对端口执行ping操作:ping在没有端口抽象的ICMP上工作。
如果您只想检查给定端口是否处于活动状态,请使用套接字或(对于端口80) curl。
https://stackoverflow.com/questions/7800680
复制相似问题