查看是否使用JavaScript打开了服务器端口
我找不到这方面的任何信息,我想知道这是否可能? 我有一个Minecraft服务器,我想ping它,看看它是否在某个特定端口上。我想用Javascript来实现这一点,但从我所看到的情况来看,你不能真正做到这一点,或者这是以前从未做过的。是否有插件或第三方Javascript供应商可以实现这一点 例如:查看是否使用JavaScript打开了服务器端口,javascript,web,minecraft,Javascript,Web,Minecraft,我找不到这方面的任何信息,我想知道这是否可能? 我有一个Minecraft服务器,我想ping它,看看它是否在某个特定端口上。我想用Javascript来实现这一点,但从我所看到的情况来看,你不能真正做到这一点,或者这是以前从未做过的。是否有插件或第三方Javascript供应商可以实现这一点 例如: mc.mydomain.net:25565 Javascript会ping服务器,并将文本从联机更改为脱机,这取决于它是否可以连接 Server is: Online 或 如果Minecraf
mc.mydomain.net:25565
Javascript会ping服务器,并将文本从联机更改为脱机,这取决于它是否可以连接
Server is: Online
或
如果Minecraft服务器确实在该端口上使用HTTP(这不太可能),那么它就可以工作 否则,不,这是不可能的,至少在目前的规范下是不可能的 浏览器只能与HTTP(即web服务器)和WebSocket及其SSL变体进行通信。我不知道即将推出的WebRTC协议是否会有所帮助
另一种选择是使用Flash-AIUI,它具有普通TCP套接字功能,可以向JS代码公开,在这些情况下可能会有所帮助。如果Minecraft服务器在该端口上实际使用plains HTTP(这不太可能),那么它就可以工作 否则,不,这是不可能的,至少在目前的规范下是不可能的 浏览器只能与HTTP(即web服务器)和WebSocket及其SSL变体进行通信。我不知道即将推出的WebRTC协议是否会有所帮助 另一种选择是使用Flash-AIUI,它具有普通TCP套接字功能,可以向JS代码公开,在这些情况下可能会有所帮助。您只能使用JavaScript向您所在的域发送HTTP(S)或WS(S)请求。A的水平太低了 如果minecraft服务器支持HTTP,您可以尝试使用它。您只能使用JavaScript向您所在的域发送HTTP(S)或WS(S)请求。A的水平太低了
如果minecraft服务器支持HTTP,您可以尝试使用它。首先,您不能ping端口,因为ping使用的是没有端口概念的ICMP。端口属于传输层协议,如TCP和UDP 因此,解决方案可以是使用像PHP这样的服务器端语言来执行查询,然后您可以向该页面发出AJAX请求以检索结果。以下是PHP中的一个示例:
<?php
error_reporting(E_ERROR);
$fp = fsockopen('mc.mydomain.net', 25565, $errno, $errstr, 1);
if (!$fp) {
echo 'no';
} else {
echo 'yes';
fclose($fp);
}
?>
此外,为了使请求保持快速,您可以设想将上述查询的结果缓存到文件或数据库中,并每隔几分钟刷新其值(例如使用cron作业),然后将缓存的结果提供给AJAX请求。首先,您不能ping端口,因为Ping使用的是没有端口概念的ICMP。端口属于传输层协议,如TCP和UDP 因此,解决方案可以是使用像PHP这样的服务器端语言来执行查询,然后您可以向该页面发出AJAX请求以检索结果。以下是PHP中的一个示例:
<?php
error_reporting(E_ERROR);
$fp = fsockopen('mc.mydomain.net', 25565, $errno, $errstr, 1);
if (!$fp) {
echo 'no';
} else {
echo 'yes';
fclose($fp);
}
?>
此外,为了使请求保持快速,您可以设想将上述查询的结果缓存到文件或数据库中,并每隔几分钟刷新其值(例如,通过使用cron作业),然后将缓存的结果提供给AJAX请求。从,搜索“javascript portscan”时的第一次点击:
var AttackAPI={
版本:“0.1”,
作者:佩特科·佩特科夫(建筑师),
主页:'http://www.gnucitizen.org'};
AttackAPI.PortScanner={};
AttackAPI.PortScanner.scanPort=函数(回调、目标、端口、超时){
变量超时=(超时==null)?100:超时;
var img=新图像();
img.onerror=函数(){
如果(!img)返回;
img=未定义;
回调(目标、端口、“打开”);
};
img.onload=img.onerror;
img.src='http://'+target+':'+port;
setTimeout(函数(){
如果(!img)返回;
img=未定义;
回调(目标、端口、“关闭”);
},超时);
};
AttackAPI.PortScanner.scanTarget=函数(回调、目标、端口、超时)
{
对于(索引=0;索引
From,搜索“javascript端口扫描”时的第一个点击:
var AttackAPI={
版本:“0.1”,
作者:佩特科·佩特科夫(建筑师),
主页:'http://www.gnucitizen.org'};
AttackAPI.PortScanner={};
AttackAPI.PortScanner.scanPort=函数(回调、目标、端口、超时){
变量超时=(超时==null)?100:超时;
var img=新图像();
img.onerror=函数(){
如果(!img)返回;
img=未定义;
回调(目标、端口、“打开”);
};
img.onload=img.onerror;
img.src='http://'+target+':'+port;
setTimeout(函数(){
如果(!img)返回;
img=未定义;
回调(目标、端口、“关闭”);
},超时);
};
AttackAPI.PortScanner.scanTarget=函数(回调、目标、端口、超时)
{
对于(索引=0;索引
var AttackAPI = {
version: '0.1',
author: 'Petko Petkov (architect)',
homepage: 'http://www.gnucitizen.org'};
AttackAPI.PortScanner = {};
AttackAPI.PortScanner.scanPort = function (callback, target, port, timeout) {
var timeout = (timeout == null)?100:timeout;
var img = new Image();
img.onerror = function () {
if (!img) return;
img = undefined;
callback(target, port, 'open');
};
img.onload = img.onerror;
img.src = 'http://' + target + ':' + port;
setTimeout(function () {
if (!img) return;
img = undefined;
callback(target, port, 'closed');
}, timeout);
};
AttackAPI.PortScanner.scanTarget = function (callback, target, ports, timeout)
{
for (index = 0; index < ports.length; index++)
AttackAPI.PortScanner.scanPort(callback, target, ports[index], timeout);
};