谁有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点半,不容易,望楼主采纳,有什么问题可以问我

一、先安装主程序:

1)解压下载得到的simplecd-desktop-012d7z ,将解压后的文件放到你想要的位置(程序将要安装的位置)。以我为例,我放在D:\Applications\web 。

注意:路径最好不要有带空格的文件夹,路径中不要有非数字或英文构成的文件夹名。

二、数据库更新:

警告:更新数据库前务必关闭程序,以免更新失败。

1)将下载后的simplecd-desktop-db-2010-10-127z解压

2)复制解压得到的三个文件到D:\Applications\web\simplecd覆盖同名文件。

3)尝试运行测试:

双击D:\Applications\web目录里的SimpleCD Desktopexe启动程序,如果防火墙出现警告提示是否允许server访问网络,请选择 解除阻止 ,如果误选择了限制访问而导致程序不能运行,在文章最后介绍方法。

出现界面如图,显示最新数据2010-10-13:

嫌弃窗口小,用浏览器访问。打开浏览器,输入如下地址并按回车 >

业务需要这么复杂吗???如果你要实现服务器和客户端都可以向对方发送消息,而不等待对方应答,只需要把InputStream和OutputStream分别放在两个不同线程里就行了,即是说把接收流与发送流分别用一个线程监听处理。如果要实现不分客户端服务器的话,用UDP通信即可

补充回答:如果不涉及到MIME,只是收发简单文本邮件。就会比较简单。因为就像你说的,smtp和pop3协议就是文本格式的。你用Socket建立连接后,就像读文件一样,一行一行的读数据,然后按照协议分析数据格式。例如如果开始时USER那么后面可能跟的就是用户等。

就是一个字符串解析和匹配的过程。网上好像有这类代码,自己找一个学习一下。我以前用C在68k上作过,不是很难。不过代码已经没有了。

你的是邮件客户端,功能类似于outlook,foxmail等,如果你能上网,就不需要邮件服务器,直接用自己的邮件账号来测试,例如如果你有一个sina的邮件账户,就可以从sina服务器收发邮件。

不过为了测试方便,还是上网去收一个邮件服务器把。例如foxmail server等。网上有教程,可以配置好的。

对于编程,既然要求用socket编写,那么就要熟悉java的socket编程,这部分倒是很简单。可能还需要看看多线程部分。

另外,你需要学习一下, smtp和pop3这两个网络协议的内容,因为你需要解析这两个协议。如果需要收发代附件的,还需要看mime的内容,不过估计不需要。

其实java有自己的类库javamail,可以实现手法邮件,功能很强大。不过既然要求必须用socket,那就不能这个了。

说的太罗嗦了。总结一下:

1)配置邮件服务器,搭建测试环境

2)熟悉java的socket编程、 Swing编程(编写界面)、多线程(选用)

3)熟悉smtp和pop3的内容(内容很多,了解基本的就可以)

网上应该有类似代码,可以用来参考。

以上就是关于谁有java本地监听与远程端口扫描 源程序全部的内容,包括:谁有java本地监听与远程端口扫描 源程序、simplecd怎么进、求java写的多线程socket端口监听服务器端程序,要代界面的.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10148370.html

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

发表评论

登录后才能评论

评论列表(0条)