我想要一个基于IP和端口的服务器。为什么是港口?因为我正在构建的系统将在不同的端口上有登录服务器和游戏服务器,所以我现在使用的是fsockopen
$start = microtime(true);
$fp = @fsockopen($host, $port, $errno, $errstr, $timeout);
if (!$fp) {
return false;
}
else {
$ping = microtime(true) - $start;
$ping = round($ping * 1000);
$res['ip'] = $host;
$res['port'] = $port;
$res['ping'] = $ping;
$res['msg'] = 'success';
return $res;
}我不能也不想使用exec() 1,IP和端口将由用户输入,exec()不能在端口上切换。
使用fsockopen,我只能使用延迟(这不是很正确)。
如果有人知道我怎么不能得到拉丁,数据包发送接收,抖动等。
也许是一些用于Ping的第三方API。提前谢谢你
发布于 2014-01-11 13:33:42
您必须使用创建(),因为ping使用ICMP,而fsockopen只适用于TCP和UDP。ICMP回送数据包不指定任何端口。在socket_create手册中,用户注释中有几个ping()示例实现。
发布于 2014-01-11 14:23:29
您可以在RFC 792中检查ICMP数据包格式。
ICMP是layer3协议,但端口号是在layer4中定义的。所以您永远找不到ICMP数据包中的端口号。
这意味着,您可以获得两个主机(IP)之间的延迟,但不能在IP:端口之间获得延迟。
https://stackoverflow.com/questions/21061637
复制相似问题