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

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

本地端口监听

import java.io.IOException

import java.net.ServerSocket

import java.net.Socket

import java.util.concurrent.ExecutorService

import java.util.concurrent.Executors

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 = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * POOL_SIZE)

System.out.println("服务器启动")

}

public void service()

{

while (true)

{

Socket socket = null

try

{

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

socket = serverSocket.accept()

executorService.execute(new Handlers(socket))

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

} catch (Exception e)

{

e.printStackTrace()

System.out.println("socket Exception:" + e)

}

}

}

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

{

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

//thread.start()

new SocketServer().service()

}

}

端口扫描代码

import java.io.IOException

import java.net.Socket

public class SearchPort implements Runnable

{

public static void main(String[] args)

{

SearchPort searchPort = new SearchPort()

Thread thread = new Thread(searchPort)

thread.start()

}

@Override

public void run()

{

searchPort("192.168.1.2", 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 = s.isConnected()

            } catch (IOException e) {

                // TODO Auto-generated catch block

                // e.printStackTrace()

            }

            if (flag) {

                System.out.println("port " + i + " is open")

                try {

                    s.close()

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace()

                }

            } else {

                // System.out.println("port " + i + " is close")

            }

        }

        //System.out.println("seach port :" + begin + " to " + end + " ok..")

    }

}

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

肯定是socket监听啊,然后每次跟一个客户端建立一个连接以后,服务器上开辟亩源一个新的服务线程为客户端服务,然后搜世 *** 作JDBC。不建议用raw的流,一开始还迅漏态是老老实实用tcp协议吧

首先使用ps -ef 确认你好掘要监袜袜滚控的weblgoic,修告余改setDomain.sh文件 添加如下内容:

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=9999"

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false "

JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.pwd.file=/opt/bea/jrockit90_150_06/jre/lib/management/jmxremote.password"

# JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"

export JAVA_OPTIONS

关于jconsole的访问密码,可在该实例所使用的$JRE_HOME/lib/management/下配置,很重要的两个文件是

jmxremote.password.template #配置访问用户名与密码

jmxremote.access #增加该用户访问权限,

这样配置就好了


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

原文地址: http://outofmemory.cn/yw/12230298.html

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

发表评论

登录后才能评论

评论列表(0条)

保存