1.说明
java多线程一般会用到共享数据,比如非常经典的卖票系统,可是起效果也仅仅是多个人操作,合成一个线程的效果而已,那可不可以,将一个工作分为多个人干了?
TCP端口及UDP端口,理论上有65535个,如果我们要扫描全部端口,会很慢,网上下载了一些,感觉只是扫描常用端口,并不是完全扫描,好吧,信任netstat -ano ?
它确实很快,可是远程扫描怎么办?我的网络水平也很一般,有时候有的端口开放给内网,却用其他设备阻挡了外网的,那又该怎么检查了?好吧,自己写写看。
import java.io.IOException;
import java.net.DatagramSocket;
import java.net.Socket;
import java.net.SocketException;
public class lzwCode implements Runnable
{
private static int ticket=65535;
int xx,yy;
public lzwCode(int x1,int y1)
{
xx=x1;
yy=y1;
}
public static void main(String [] args)
{ int x=1,y=x+100;
while(x<ticket)
{
if(y>ticket)
{
y=ticket;
}
new Thread(new lzwCode( x, y),x+"").start();
x=x+100;
y=x+100-1;
if(y==ticket)
x=ticket;
}
}
public void run()
{
for(int i=xx;i<yy;i++)
{
try {
new Socket("ip",i);
System.out.println("TCP端口" + i);
}
catch (IOException e){ }
try{
new DatagramSocket(i).close();
}
catch(SocketException e)
{
System.out.println("UDP端口"+i);
}
}
}
}
创建了无数个线程,不知道是否真的比单一线程的操作会快些,因为我的电脑真的很差,什么时候有个多核cpu给我,试试看啊。