谁有java本地监听与远程端口扫描 源程序

谁有java本地监听与远程端口扫描 源程序,第1张

本地端口监听

import javaioIOException;

import javanetServerSocket;

import javanetSocket;

import javautilconcurrentExecutorService;

import javautilconcurrentExecutors;

public class SocketServer

{

private ServerSocket serverSocket;

private ExecutorService executorService;// 线程

private final int POOL_SIZE = 600;// 单个CPU线程池大小

public SocketServer() throws IOException

{

serverSocket = new ServerSocket(9888);//监听的端口号

// Runtime的availableProcessor()方法返回当前系统的CPU数目

executorService = ExecutorsnewFixedThreadPool(RuntimegetRuntime()availableProcessors()  POOL_SIZE);

Systemoutprintln("服务器启动");

}

public void service()

{

while (true)

{

Socket socket = null;

try

{

// 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接

socket = serverSocketaccept();

executorServiceexecute(new Handlers(socket));

//这里就是放业务逻辑的地方例如获取数据等等

} catch (Exception e)

{

eprintStackTrace();

Systemoutprintln("socket Exception:" + e);

}

}

}

public static void main(String[] args) throws IOException

{

//Thread thread = new Thread(new PringtThread());

//threadstart();

new SocketServer()service();

}

}

端口扫描代码

import javaioIOException;

import javanetSocket;

public class SearchPort implements Runnable

{

public static void main(String[] args)

{

SearchPort searchPort = new SearchPort();

Thread thread = new Thread(searchPort);

threadstart();

}

@Override

public void run()

{

searchPort("19216812", 0, 9999);

}

public void searchPort(String ip,int begin, int end) {

        // 1-65535

        Socket s = null;

        for (int i = begin; i < end; i++) {

            boolean flag = false;

            try {

                s = new Socket(ip, i);

                flag = sisConnected();

            } catch (IOException e) {

                // TODO Auto-generated catch block

                // eprintStackTrace();

            }

            if (flag) {

                Systemoutprintln("port " + i + " is open");

                try {

                    sclose();

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    eprintStackTrace();

                }

            } else {

                // Systemoutprintln("port " + i + " is close");

            }

        }

        //Systemoutprintln("seach port :" + begin + " to " + end + " ok");

    }

}

第一个端口监听的采用了线程池的技术,当大数据来的时候也不怕(某大型企业的部分源码),第二个例子是端口扫描器,采用了多线程扫描,代码直接复制就可以用的,从10点50分打代码11点半,不容易,望楼主采纳,有什么问题可以问我

下面是一个解决方案 , 用到 Morena 60 Framework 框架 里的 javaTwain功能 , 貌似搜了一下

好像要收费的,不过你可以找找是否有破解版的,没有的话,那就只有走偏门了 看是否能通过反编译 ,看改源代码了

RE:

javatwain may be a powerful solution,you can go to >

1得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import javaio;

import javautil;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount>30)

Threadsleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

pstart();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddressgetLocalHost();

String hostAddress = hostgetHostAddress();

int k=0;

k=hostAddresslastIndexOf("");

String ss = hostAddresssubstring(0,k+1);

for(int i=1;i <=255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount>0)

Threadsleep(50);

}

public static void main(String[] args) throws Exception{

Ip ip= new Ip();

ipPingAll();

javautilSet entries = pingentrySet();

Iterator iter=entriesiterator();

String k;

while(iterhasNext()){

MapEntry entry=(MapEntry)iternext();

String key=(String)entrygetKey();

String value=(String)entrygetValue();

if(valueequals("true"))

Systemoutprintln(key+"-->"+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

thisip=ip;

}

public void run(){

try{

Process p= RuntimegetRuntime()exec ("ping "+ip+ " -w 300 -n 1");

InputStreamReader ir = new InputStreamReader(pgetInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i <7; i++)

inputreadLine();

String line= inputreadLine();

if (linelength() <17 || linesubstring(8,17)equals("timed out"))

pingput(ip,"false");

else

pingput(ip,"true");

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

代码都不舍得贴上了?

你那代码逻辑错误了,你传入文件后

public void foundJavaFile(File fileSrc)

{

if(fileSrcisDirectory){ //是文件夹类型就遍历文件夹

File[] files = fileSrclistFiles();

for (File f : files) {

if (fisDirectory()) {

list(fgetPath());

} else {

if(fgetNameendWith(java)){

Systemoutprintln(fgetName());

count++;

}

}

else{ //传入的是普通文件就直接判断是否是java文件

if(fgetNameendWith(java)){

Systemoutprintln(fgetName());

count++;

}

}

}

我这没java开发环境,是文本里改的,自己测试下吧。

import javaio;

public class Demo {

    public static void main(String[] args) throws Exception {

        Systemoutprintln(ThreadcurrentThread()getName()+"抓取的内容:");

        getFiles(new File("E:\\aa"));

    }

    private static void getFiles(File pathName){

        File[] files = pathNamelistFiles();

        for(File file : files){

            if(!fileisHidden() && fileisDirectory()){

                new Thread(){

                    public void run(){

                        getFiles(file);

                        Systemoutprintln(ThreadcurrentThread()getName()+"抓取到的内容:");

                    }

                }start();

            }else{

                        new FileFilter() {

                            public boolean accept(File pathname) {

                                //如果要抓取别的,可以修改xx,我这里测试使用txt

                                boolean flag = pathnamegetName()endsWith("txt");

                                if(flag){

                                    Systemoutprintln("\t"+pathname);

                                }

                                return flag;

                            }

                        }accept(file);

            }

        }

    }

}

提示:我这程序一个文件夹一个线程,本身main方法是一个线程。

//测试结果:

main抓取的内容:

    E:\aa\aa1txt

    E:\aa\复件 aa1txt

    E:\aa\bb\复件 (2) bb2txt

    E:\aa\bb\复件 (3) bb2txt

    E:\aa\bb\复件 (4) bb2txt

Thread-0抓取到的内容:

    E:\aa\复件 bb\bb1txt

    E:\aa\复件 bb\bb2txt

    E:\aa\复件 bb\复件 bb2txt

Thread-1抓取到的内容:

以上就是关于谁有java本地监听与远程端口扫描 源程序全部的内容,包括:谁有java本地监听与远程端口扫描 源程序、用java程序来获取扫描仪里面的数据、java怎样扫描局域网内的设备信息,并将信息写入到数据库。比如:IP、MAC地址、Hostname等。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10164453.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存