- 締切済み
Java appletプログラムで困ってます。
市販の本に掲載せれているEclipse下記プログラムを丸写しで打込みコンパイルしました。 それでWEB上で確認した所、オブジェクト動作上(.pngの表示・非表示)では動作している様に思います。 しかし、どうもLANネットワーク(最終的にはRS232C)動作反応がありません プログラムに問題があるのでしょうか? ネットワーク・セキュリティー・ファイヤウォール等に問題があるのでしょうか? まったく見当がつきません。Java言語は初心者です。 ご教授宜しくお願い致します。 import java.applet.Applet; import java.awt.Button; import java.awt.Event; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class xport002 extends Applet implements Runnable{ boolean sw1,sw2,run; Image img1,img2,img3; String buff; char com; Thread th=null; int port=10001; InetAddress xport_ip=null; Socket xport_socket; DataInputStream socketin; DataOutputStream socketout; public void init(){ try{ xport_ip=InetAddress.getByName(getCodeBase().getHost()); } catch(UnknownHostException e){} try{ xport_socket=new Socket(xport_ip,port); //socketin=new DataInputStream(xport_socket.getInputStream()); socketout=new DataOutputStream(xport_socket.getOutputStream()); } catch(Exception e){} img1=getImage(getDocumentBase(),"base2.png"); img2=getImage(getDocumentBase(),"Red3.png"); img3=getImage(getDocumentBase(),"Red4.png"); add(new Button("LED-R1")); add(new Button("LED-R2")); repaint(); } public boolean action (Event e,Object obj){ if(obj.equals("LED-R1")){ sw1=!sw1; com='1'; repaint(); run=true; } else if(obj.equals("LED-R2")){ sw2=!sw2; com='2'; repaint(); run=true; } return true; } public void start(){ if(th==null){ th=new Thread(this); th.start(); } } public void run(){ Thread me=Thread.currentThread(); while(th==me){ if(run){ try{ socketout.writeByte(com); socketout.flush(); repaint(); th.sleep(1000); } catch(Exception e){} run=false; sw1=false; sw2=false; repaint(); } try{ buff=socketin.readLine(); repaint(); } catch(IOException e){} } } public void stop(){ if(th!=null){ try{ socketin.close(); socketout.close(); xport_socket.close(); } catch(Exception e){} th.stop(); th=null; } } public void paint(Graphics g){ g.drawImage(img1,100,50,this); if (sw1)g.drawImage(img2,100,50,this); if (sw2)g.drawImage(img3,150,50,this); String t1=buff+"℃"; g.setFont(new Font("MS明朝",Font.BOLD,36)); g.drawString(t1, 100, 200); } }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- maxeed1
- ベストアンサー率0% (0/0)
このプログラムがどういうものか分かりませんが貼り付けられたプログラムでは重要そうな socketin=new DataInputStream(xport_socket.getInputStream()); の行がコメントアウトされてます。 まずはコメントアウト外して試してみてはどうでしょう。 あとその下で catch(Exception e){} となっていますがこれだと実行中にエラーが起きても何もしないので catch(Exception e){ e.printStackTrace(); } にしてせめてコンソールにエラーを出力するようにすると良いです。(他のcatchも同様です) コンソールはコンピュータのコントロールパネルのJavaコントロールパネルの詳細で「コンソールを表示する」チェックがあるのでチェックします。それでアプレット起動するとコンソールが同時に立ち上がり、実行の様子とprintStackTraceで出したエラーが見れるはずです。
お礼
ご教授誠にありがとうございます 2・3回本と読み比べたのですが、コメントアウトしている所を見落としていました 基本から理解し勉強しなければと、反省しています。 結果、良好に動作しました、重ね重ねありがとうございました。