首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用端口Pinging,不返回任何内容,PHP/APACHE

问使用端口Pinging,不返回任何内容,PHP/APACHE
EN

Stack Overflow用户
提问于 2011-10-18 07:10:49
回答 4查看 6.5K关注 0票数 0

我使用以下内容来获取和IP或域名的状态

代码语言:javascript
复制
<?php
 system('ping -c1 -w1 193.33.186.70') ;
?>

我如何ping 80端口?一旦提供port,则根本不返回任何内容。尝试通过':80‘和’80‘将其添加到末尾

任何想法都值得一提!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-18 07:19:47

如果您想要做的是找出给定的主机是否接受端口80上的TCP连接,您可以这样做:

代码语言:javascript
复制
$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的信息。

票数 4
EN

Stack Overflow用户

发布于 2011-10-18 07:15:34

Ping命令使用的不是TCP协议,而是ICMP协议。因此您不能使用TCP端口80。

您可以使用fsockopen()或cURL ping服务器,使用gethostbyaddr()获取域名。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 07:14:05

通常,您不能对端口执行ping操作:ping在没有端口抽象的ICMP上工作。

如果您只想检查给定端口是否处于活动状态,请使用套接字或(对于端口80) curl。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7800680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档