プロが教える店舗&オフィスのセキュリティ対策術

1 ネットワークを通じて送信する可能性のあるコマンド文字列とその働きを書いてください。

2 26,73行目のcatchで補足される可能性のある例外と、その発生箇所と原因を書いてください。
2番は大変なので1番だけの解答でも大丈夫です。

よろしくお願いします。

1: import java.awt.event.*;
2: import java.awt.*;
3: import java.io.*;
4: import java.net.*;
5:
6: public class Test72 {
7: private MyCanvas c;
8: private BufferedWriter bw;
9: private BufferedReader br;
10:
11: public static void main( String[] args ) {
12: Test72 t72 = new Test72();
13: t72.doEvent();
14: }
15:
16: Test72(){
17: Frame f = new Frame( "Test72" );
18: f.setSize(640,480);
19: f.addWindowListener( new WindowAdapter() {
20: @Override public void windowClosing( WindowEvent e ) {
21: try {
22: bw.write( "quit" );
44
23: bw.flush();
24: bw.close();
25: br.close();
26: } catch( Exception e2 ) {}
27: System.exit( 0 );
28: }
29: });
30: c = new MyCanvas();
31: c.addMouseListener( new MouseListener() {
32: @Override public void mouseClicked( MouseEvent e ) {
33: try {
34: bw.write( "setOval " + e.getX() + " " + e.getY() + "¥n" );
35: bw.flush();
36: c.setPoint( e.getX(), e.getY() );
37: } catch( Exception e2 ) {}
38: }
39: @Override public void mouseEntered( MouseEvent e ) {}
40: @Override public void mouseExited( MouseEvent e ) {}
41: @Override public void mousePressed( MouseEvent e ) {}
42: @Override public void mouseReleased( MouseEvent e ) {}
43: });
44: c.addMouseMotionListener( new MouseMotionListener() {
45: @Override public void mouseDragged( MouseEvent e ) {
46: try {
47: bw.write( "setOval " + e.getX() + " " + e.getY() + "¥n" );
48: bw.flush();
49: c.setPoint( e.getX(), e.getY() );
50: } catch( Exception e2 ) {}
51: }
52: @Override public void mouseMoved( MouseEvent e ) {}
53: });
54: f.add( c );
55: f.setVisible( true );
56: }
57:
58: public void doEvent() {
59: try {
60: InetSocketAddress socketAddress =
61: new InetSocketAddress( "localhost", 8000 );
62: Socket socket = new Socket();
63: socket.connect( socketAddress, 10000 );
64: InetAddress inadr;
65: if( ( inadr = socket.getInetAddress() ) != null ){
66: System.out.println( "Connect to " + inadr );
67: } else {
68: System.out.println( "Connection failed" );
69: System.exit( 0 );
70: }
71: bw = new BufferedWriter(
new OutputStreamWriter( socket.getOutputStream() ) );
72: br = new BufferedReader(
new InputStreamReader( socket.getInputStream() ) );
73: } catch( Exception e ) {}
74: }
75: }

A 回答 (3件)

ひとつずつ調べて、ネットワークに送信するメソッドがどれか特定する



そのメソッドで送信されるのはどんな文字列か調べる

という手順で追いかけてください。
その上で、わからない点があれば、そのわからない箇所がどのように理解できないのか、具体的に示してください。

たとえば
f.setSize(640,480);

f→ Frameのインスタンス
→Frame.setSizeメソッドのマニュアルを読む
→ネットワークに関係ない
とわかりますよね?
これすらわからない、というのなら、理解が足りないです。教科書を戻って理解できるまで復習してください。


こういう手間をかける気が無い、という場合は、プログラミングに向いてません。
    • good
    • 0

1もやりかたは同じです。



熟練者なら、一通り眺めるだけでわかるかもしれませんが、
そうでないなら、一つずつ確認するだけです。

この回答への補足

すみませんが自分には1番わからないので説明おねがいできませんか?

補足日時:2013/12/07 18:37
    • good
    • 0

2番も簡単です。


そのcatchに対応するtryの中にあるものについて、マニュアルで調べるだけですから。

26行なら
bw.write( "quit" );
bw.flush();
bw.close();
br.close();
の4つが対象。
private BufferedWriter bw;
private BufferedReader br;
なのだから、BufferdWriter,BufferdReaderのそれぞれのメソッドのマニュアルを読めばいい。

例えば、
bw.write("quit") なら、 BufferWriterのマニュアルを読む
http://docs.oracle.com/javase/jp/6/api/java/io/B …
ここにwrite(String)というメソッドは無いが、Writerから継承されるものとして write(String) があるので、Writerのマニュアルを読む。
http://docs.oracle.com/javase/jp/6/api/java/io/W …
> 例外:
> IOException - 入出力エラーが発生した場合
発生する例外と、その内容が簡単に書いてある。


あとは、おなじみの 「NullPointerException」

この回答への補足

ありがとうございます。出来れば1番もお願いします。

補足日時:2013/12/07 14:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!