[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00062] (続) スレッドからスレッド作成元クラスを参照する方法?



すいません。さきほどの(1),(2)のクラスが思考錯誤の途中で
わかりづらいものだったので、申し訳ありませんが、もう一度
送信させて頂きます。m(__)m

--------------------------------------------------
(1)PortScanner.java
// ポートスキャナ ver1.0

import java.net.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class PortScanner extends JFrame{
	//Field
	private JButton startButton;
	private JButton stopButton;
	private JLabel label;
	private JTextArea textArea;
	private JScrollPane scrollPane;
	private JPanel panel;
	//Constructor
	public PortScanner(){
		super("PortScanner");
		label = new JLabel("PortNumber:  ");
		textArea = new JTextArea("(List of Active
Server)\n",10,20);
		scrollPane = new JScrollPane(textArea);
		panel = new JPanel(new GridLayout(2,1));
		startButton = new JButton("START");
		stopButton = new JButton("STOP");
		panel.add(startButton);
		panel.add(stopButton);
		//EventHandler
		startButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				Thread t = new Thread(new Scanner());
				t.start();
			}
		});
		stopButton.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent ae){
				System.exit(0);
			}
		});
		//Show Components
		this.getContentPane().add(label,BorderLayout.NORTH);
	
this.getContentPane().add(scrollPane,BorderLayout.CENTER);
		this.getContentPane().add(panel,BorderLayout.SOUTH);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.pack();
		this.show();
	}
	//MainMethod
	public static void main(String[] args){
		PortScanner ps = new PortScanner();
	}
}
------------------------------------------------------

(2)Scanner.java
import java.net.*;
import java.io.*;

public class Scanner implements Runnable{
	//Method
	public void run(){
			String host = "localhost";
			try{
				InetAddress adress = InetAddress.getByName(host);
				for(int i=1;i<65536;i++){
					Socket socket = null;
					try{
						socket = new Socket(host,i);
						//↓ここで、どうにかこうやってオブジェクト参照した
いのですが・・
						ps.setTextArea("There is a server on Port No." + i
+"\n");
						ps.setLabel("PortNumber: " + i + "/65535");
					}catch(IOException ioe){
						ps.setLabel("PortNumber: " + i + "/65535");
						//このポートではサーバーは稼動していない
					}finally{
						try{
							if(socket != null){
								socket.close();
							}
						}catch(IOException ioe){
							//サーバの稼動していないホストとの接続は
							//失敗しているので閉じる必要なし
						}
					}
				}
			}catch(UnknownHostException uhe){
				System.err.println(uhe);
			}
	}
}

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/