java 扫描tcp端口号_多线程TCP端口扫描 java实现
界面部分:
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class Scaner extends JFrame {
private
static final long serialVersionUID = 1L;
public
static JCoolButton submit = new JCoolButton();
public
static JCoolButton stop = new JCoolButton();
public
static JTextArea ip = new JTextArea();
public
static JTextArea min = new JTextArea();
public
static JLabel to = new JLabel("至");
public
static JTextArea max = new JTextArea();
public
static JTextArea result = new JTextArea();
public
static JLabel ipadd = new JLabel("IP地址:");
public
static JLabel port = new JLabel("端口:");
public
static JDialog errInf = new JDialog();
public
static JLabel inf = new JLabel("端口号必须为0至65535的整数");
public
void launchframe() {
JPanel jp = new JPanel();
jp.setLayout(null);
jp.setOpaque(true);
jp.setBackground(Color.LIGHT_GRAY);
setSize(480, 320);
setLocation(450, 250);
setTitle("多线程局域网TCP端口扫描");
ipadd.setBounds(10, 30, 50, 25);
ip.setBounds(55, 30, 100, 25);
port.setBounds(160, 30, 35, 25);
min.setBounds(195, 30, 35, 25);
to.setBounds(235, 30, 15, 25);
max.setBounds(255, 30, 35, 25);
submit.setBounds(310, 20, 60, 35);
submit.setText("确定");
submit.addActionListener(new submitAction());
stop.setBounds(380, 20, 60, 35);
stop.setText("停止");
stop.addActionListener(new cancelAction());
result.setBounds(10, 60, 430, 210);
result.setLineWrap(true);
result.setEditable(false);
Container dPanel = errInf.getContentPane();
errInf.setSize(200, 80);
errInf.setLocation(550, 300);
dPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
dPanel.add(inf);
jp.add(ipadd);
jp.add(ip);
jp.add(port);
jp.add(min);
jp.add(to);
jp.add(max);
jp.add(submit);
jp.add(stop);
jp.add(result);
add(jp);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setVisible(true);
}
public
static void main(String[] args) {
new Scaner().launchframe();
}
}
线程部分:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.util.*;
class TCPThread extends Thread {
public
static InetAddress hostAddress;
public
static boolean runFlag = true;
public
static int iport = Integer.parseInt(Scaner.min.getText());
public
static int aport = Integer.parseInt(Scaner.max.getText());
List ports = new
ArrayList();
Set s = new
HashSet();
private
int threadnum;
public
TCPThread() {
}
public
TCPThread(String name, int threadnum) {
super(name);
this.threadnum = threadnum;
}
public
static List
removeDuplicateWithOrder(List
list) {
Set set = new
HashSet();
List newList = new
ArrayList();
for
(Iterator iter =
list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add((Integer) element))
newList.add((Integer) element);
}
return
newList;
}
public
void run() {
int i = 0;
Socket TCPSocket;
runFlag = true;
for (i = iport + threadnum; i < aport; i += 200)
{
if (runFlag) {
try {
hostAddress = InetAddress
.getByName(Scaner.ip.getText());
TCPSocket = new Socket(hostAddress, i);
TCPSocket.close();
ports.add(i);
for(Iterator iter =
TCPThread.removeDuplicateWithOrder(ports).iterator();iter.hasNext();){
Scaner.result.append(" " + iter.next());
}
} catch (IOException e) {
}
}
}
runFlag = false;
if(i == aport){;
Scaner.result.append("\n" + "扫描结束...");
}
}
}
class submitAction implements ActionListener {
public
void actionPerformed(ActionEvent a) {
if (Integer.parseInt(Scaner.min.getText()) < 0
|| Integer.parseInt(Scaner.max.getText()) > 65535)
{
Scaner.errInf.setVisible(true);
};
Scaner.result.setText("开始扫描:");
synchronized (this) {
for (int i = 0; i < 200; i++) {
new TCPThread("T" + i, i).start();
}
}
}
}
class cancelAction implements ActionListener {
public
void actionPerformed(ActionEvent a) {
TCPThread.runFlag = false;
}
}
按钮变换部分:
import javax.swing.JButton;
import java.awt.Cursor;
import java.awt.event.*;
public class JCoolButton extends JButton {
private
static final long serialVersionUID = 1L;
public
JCoolButton() {
super();
init();
}
public
void init() {
setBorderPainted(false);
addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent arg0) {
setBorderPainted(true);
setCursor(new Cursor(Cursor.HAND_CURSOR));
}
@Override
public void mouseExited(MouseEvent arg0) {
setBorderPainted(false);
}
});
}
}
java 扫描tcp端口号_多线程TCP端口扫描 java实现相关推荐
- 串口发送tcp数据 源端口号_三分钟基础知识:用动画给面试官解释 TCP 三次握手过程...
作者 | 小鹿 来源 | 小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐. 对于这部分掌握以及 TC ...
- 如何修改mysql占用的端口号_修改mysql端口号(mysql的端口号)
修改mysql端口号(mysql的端口号) 2020-05-07 22:12:00 共10个回答 如何查看mysql默认端口号和修改端口号 登录mysql,使用命令showglobalvariable ...
- mysql数据库怎么查看端口号_怎么查看数据库端口号(mysql怎么查看端口号)
怎么查看数据库端口号(mysql怎么查看端口号) 2020-05-08 11:20:02 共9个回答 如何查看自己数据库的端口号 navicat,找到服务器,右键->连接属性,就找到端口号了 如 ...
- ipv6 端口号_计算机网络之IP、MAC、端口号、子网掩码、默认网关、DNS
IP地址 IP地址是 Internet Protocol Address 的缩写,译为"网际协议地址". 目前大部分软件使用 IPv4 地址,但 IPv6 也正在被人们接受,尤其是 ...
- tomcat中间件的默认端口号_tomcat端口号修改(tomcat默认端口号是多少)
tomcat端口号修改(tomcat默认端口号是多少) 2020-05-07 22:25:25 共10个回答 怎么改tomcat的端口号? 修改tomcat端口号的方法:修改Server.xml文件, ...
- xserver服务端口号_服务器怎么开通端口号
dns端口号的服务器如何开启端口 答:在架设dns服务器时,linux系统需要在防火墙规则中内加入UDP端口53的外网访问,windows系统需要在防火墙里添加端口,选择UDP,输入端口号53,如果使 ...
- ldap协议端口号_什么是LDAP协议端口号? 比较LDAP端口389和636
ldap协议端口号 Lightweight Directory Access Protocol or LDAP is used to authenticate and authorize users. ...
- rtsp端口号_常见网络摄像机(摄像头)的端口及RTSP地址
海康威视 默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设 端口:"HTTP 端口"(默认为 80)."RTSP 端口"(默认为 ...
- mysql有多少个端口号_查看mysql端口号(mysql端口号是多少)
查看mysql端口号(mysql端口号是多少) 2020-05-07 22:11:45 共10个回答 如何查看mysql的端口号 1使用命令showglobalvariableslike'port'; ...
最新文章
- Java初学者都应该搞懂的六个问题
- 基于AIO的CS聊天室
- ADO.NET Entity Framework如何:手动配置实体框架项目
- Android开发之部分字符串可实现超链接点击事件的方法
- opencv 检测几何图形_使用OpenCV + ConvNets检测几何形状
- 卡通驱动项目ThreeDPoseTracker——关键点平滑方案解析
- 12岁上大学,23岁获博士学位,这位天才科学家正式加盟清华
- ServerSocketChannel的使用例子
- 通过vmstat命令判断服务器瓶颈
- 如何将MySQL卸载干净?
- 音视频传输协议之 RTMP
- led灯光衰怎么解决_LED路灯光衰问题解决方法
- MATLAB生成随机数
- SAP HANA数据获取(data provisioning ) - SLT
- Machine Learning-数学基础2
- 【有利可图网】PS实战系列:简单易学的PS把照片转素描效果
- word文档无法保存问题
- 搞模具的想转行学计算机,为什么很少人去做模具设计学徒,看看这里你就明白了!...
- 小彭玉的扫荡食堂计划
- IDEA Translation翻译插件