js怎么监视一个端口 并获取这个端口的信息
用ActiveX插件吧,或者隐藏的flash/flex/...
或者用其它语言写监听程序,公布接口给js调用
nodejs如何检查哪个IP访问80端口
由于linux的系统限制,普通用户是无法打开1024以下端口的,这里面就包括http的默认端口80,这就使得很多用户使用root权限来执行node,这带来了不可预计的安全问题,所以这并不是一个好办法。
其实我们可以使用iptables的端口转发功能来解决这个问题:
1,首先将node的主程序绑定到高于1024端口,比如8090,这样普通用户就可以启动这个http server了,只不过不是在默认的80端口上监听;
2,配置iptables将80端口转发到8090上,如下命令:
#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090
该命令的意思就是在iptable中添加一条端口转发规则,如果删除该规则,重新绑定,则先查找出:
#iptables --line-numbers --list PREROUTING -t nat
然后使用行号删除:
#iptables -t nat -D PREROUTING 行号
3,记得添加8090端口到iptables的INPUT ACCEPT规则中
#iptables -I INPUT -p tcp --dport 8090 -j ACCEPT
4,第2步和第3步添加的这些规则,都是临时性的,重启服务器之后就无效了,所以需要保存起来
#/sbin/service iptables save
端口转发配置完成
————————————————
版权声明:本文为CSDN博主「newborn2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
如何用java语言实现端口扫描器
使用 DatagramSocket(int port) 建立socket(套间字)服务。
将数据打包到DatagramPacket中去
通过socket服务发送 (send()方法)
关闭资源
public static void main(String[] args) {
DatagramSocket ds = null; //建立套间字udpsocket服务
try {
ds = new DatagramSocket(8999); //实例化套间字,指定自己的port
} catch (SocketException e) {
System.out.println("Cannot open port!");
System.exit(1);
}
byte[] buf= "Hello, I am sender!".getBytes(); //数据
InetAddress destination = null ;
try {
destination = InetAddress.getByName("192.168.1.5"); //需要发送的地址
} catch (UnknownHostException e) {
System.out.println("Cannot open findhost!");
System.exit(1);
}
DatagramPacket dp =
new DatagramPacket(buf, buf.length, destination , 10000);
//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)
try {
ds.send(dp); //发送数据
} catch (IOException e) {
}
ds.close();
}
}
接收步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。
定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容
通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中
使用DatagramPacket的方法,提取数据。
关闭资源。
import java.net.*;
public class Rec {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(10000); //定义服务,监视端口上面的发送端口,注意不是send本身端口
byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包
ds.receive(dp);//将接受内容封装到包中
String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容
System.out.println(data);//打印内容
ds.close();//关闭资源
}
}
0条大神的评论