Java for循环语句始终为true
长话短说,我正在尝试用非常简单的gui创建端口嗅探器。 没有工作程序,端口嗅探器工作正常,但我想在每次发现打开的端口时更新area1。添加辅助程序后,“for”循环不会循环。所以如果有人能告诉我问题出在哪里就好了Java for循环语句始终为true,java,for-loop,swingworker,Java,For Loop,Swingworker,长话短说,我正在尝试用非常简单的gui创建端口嗅探器。 没有工作程序,端口嗅探器工作正常,但我想在每次发现打开的端口时更新area1。添加辅助程序后,“for”循环不会循环。所以如果有人能告诉我问题出在哪里就好了 import java.net.*; import java.awt.*; import java.awt.event.*; // definējam galveno klasi public class PortScanner extends JFrame implements A
import java.net.*;
import java.awt.*;
import java.awt.event.*;
// definējam galveno klasi
public class PortScanner extends JFrame implements ActionListener {
JButton poga1 = new JButton("palaist skaneri");
JTextField jt = new JTextField ("ievadam adresi",30);
SwingWorker worker;
JTextArea area1 = new JTextArea(5, 40);
//taisam konsturkoturu
public PortScanner(){
//virsraksts
super("Portu skaneris007");
//definejam konteineru
Container content = getContentPane();
content.setBackground(Color.BLUE);
//liekam konteineri izkartojumu
content.setLayout(new FlowLayout());
//ieliekam logā pogu
content.add(poga1);
content.add(jt);
content.add(area1);
//ramim izmeri
setSize(600,500);
//pieliekam klausitaju
poga1.addActionListener(this);
jt.addActionListener(this);
//aiversanas operacija
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent a){
if(a.getSource()== poga1){
//seit bus darbiba ko veiks poga
this.metode1();
}
}
public void metode1() {
area1.setText("");
if (worker != null) {
worker.cancel(false);
}
worker = new SwingWorker() {
@Override
protected Integer doInBackground() {
for (int port = 1; port <= 65535; port++) { //65535
try {
String input = jt.getText();
Socket socket = new Socket();
socket.connect(new InetSocketAddress(input, port), 1000);
socket.close();
area1.append("ports " + port + "atvērts \n");
System.out.println("Port " + port + " is open");
} catch (Exception ex) {}
return 0;
}
worker.execute();
return null;
}
};
}
public static void main(String []args) {
new PortScanner();
}
}
import java.net.*;
导入java.awt.*;
导入java.awt.event.*;
//定义贾姆·加尔维诺·克拉西
公共类PortScanner扩展JFrame实现ActionListener{
JButton poga1=新JButton(“palaist skaneri”);
JTextField jt=新的JTextField(“ievadam adresi”,30);
摇摆工人;
JTextArea Area 1=新的JTextArea(5,40);
//泰山康斯特库图鲁酒店
公共端口扫描程序(){
//病毒库
超级(“Portu skaneris007”);
//定义内贾姆·康泰内鲁
容器内容=getContentPane();
内容.背景(颜色.蓝色);
//利卡姆·康泰内里·伊兹卡尔托朱穆
content.setLayout(新的FlowLayout());
//伊列卡姆日志āpogu
内容。添加(poga1);
内容。添加(jt);
内容。添加(区域1);
//伊兹梅里河
设置大小(600500);
//皮耶利坎克劳西塔朱
poga1.addActionListener(本);
jt.addActionListener(本);
//艾尔萨纳斯歌剧院
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(真);
}
已执行的公共无效操作(操作事件a){
if(a.getSource()==poga1){
//darbiba ko veiks poga赛特巴士
这个;
}
}
公共空间metode1(){
区域1.setText(“”);
if(worker!=null){
worker.cancel(假);
}
工人=新的SwingWorker(){
@凌驾
受保护整数doInBackground(){
对于(int port=1;port行
return 0;
将始终从方法返回,因此终止循环,无论端口的实际值是多少。代码只执行一次。您将返回0
放在for
循环的末尾,因此当它到达该点时,当然会从doInBackground
函数返回,这意味着循环的其余部分将不会运行。