- ベストアンサー
通信の中断 doja 3.0
yusukeyの回答
コネクションの close() を呼び出すのはいかがでしょう?
関連するQ&A
- dojaのHTTP通信時Exception
iアプリでアプリの開発を行っています。 開発環境はdoja5.0+eclipse3.1を使用しております。 HTTP通信によりサーバにバイナリデータを送信したいのです ADFの設定はPackageURL及びUseNetworkを設定しております。 localhostでエミュレータでテストしているため PackageURLは「http://localhost:80/dictionary.jar」と設定しています。 以下のソースコードをデバッグ起動すると「httpCon.connect();」にて exceptionが発生して、「Illegal connection object state」のいう メッセージがかえってきます。 以下はHTTP通信部分のソースです。 どうか知恵をお貸しください。 よろしくお願いいたします。 // URLを作成する String url = IApplication.getCurrentApp().getSourceURL() + "getScore.php"; StringBuffer reqMsg = new StringBuffer(); DataInputStream fromStream = null; DataOutputStream toStream = null; HttpConnection httpCon = null; try { // HTTP接続処理 httpCon = (HttpConnection)Connector.open(url, Connector.READ_WRITE, true); httpCon.setRequestMethod(HttpConnection.POST); httpCon.setRequestProperty("Content-Type", "application/x-xpinstall"); //送信データ元(スクラッチパッド頭8000バイト分) fromStream = Connector.openDataInputStream("scratchpad:///0;pos=0,length=8000"); //送信データ先 toStream = httpCon.openDataOutputStream(); byte[] buff = new byte[8000]; fromStream.read(buff); toStream.write(buff); //http接続 httpCon.connect();←ここでException
- ベストアンサー
- Java
- タイマー関数とマルチスレッドについて
こんばんわ。 マルチスレッドプログラミングを行なっています。 コンパイラはVC++.NETでC言語を利用しwin32 apiを用いています。 スレッドを_beginthreadex関数でスレッドを2つ生成し、WaitForSingleObject,SetEvent,ResetEvent関数によるイベント同期を利用し、2スレッドの同期をはかっています。 [質問内容] 以下のように、スレッド2でWaitForSingleObject関数にてスレッド2を待機状態にし、スレッド1のSetEvent関数にて待機しているスレッド2を再開させる方法をとっています。 例えば、タイマーをスタート後に待機状態になり、スレッド2が再開後タイマーストップするとした場合、スレッド2が待機状態のときもタイマーを動き続けているのでしょうか? ・スレッド1 SetEvent(hEvent[0]); ・スレッド2 SUSPEND_INTERVAL=20 if(Num%THREAD_SUSPEND_INTERVAL==0){ timestart=timeGetTime();←タイマースタート WaitForSingleObject(hEvent[0],INFINITE); ResetEvent(hEvent[0]); timestop=timeGetTime();←タイマーストップ } よろしくお願いします。
- ベストアンサー
- C・C++・C#
- thread.stop()について
こんにちは。お願いします。 javaのプログラミングについては、殆ど分かりませんが、 フリーのアプレットをダウンロードして、使用してます。 スクロールする速度などだけをカスタマイズしたいのです。 JAVAファイルもダウンロードできるようになっていますが、 JDK バージョン 1.1以前の設計なようで、 それで、コンパイルすると、以下のエラーが出ます。 警告: java.lang.Thread の stop() は推奨されません。 thread.stop(); stop()について、どう変更したらいいのでしょう。 javaファイルは、 /********** start **********/ public void start() { thread = new Thread(this); thread.start(); } /********** stop **********/ public void stop() { thread.stop(); thread = null; } このようになっていますが、 http://java.sun.com/j2se/1.3/ja/docs/ja/guide/misc/threadPrimitiveDeprecation.html を参考に、 thread.stop(); を削除しようかとも思いましたが、ちょっと怖いですし、 どうぞ、お願い申し上げます
- ベストアンサー
- Java
- 物理シミュレーションの可視化(C#)
C#で物理シミュレーションをしようと考えています。粒子が飛び交う様子をシミュレートし、StartやStopが可能で、粒子のパラメータなどを逐一変更できるようなものにする予定です。 で、シミュレートする部分は大体できたのですが、どのようにして画面に描画するかで悩んでいます。 C#でテトリスを作ったことがあるのですが、Threadで描画(this.Invalidate()の呼び出し)と計算(テトリミノの落下)を無限ループさせるという、かなり強引な手段で作り上げてしまいました。ループの時間間隔の調整はThread.Sleep()で、無限ループの停止、開始は外部からそのThreadをSuspend、Resumeさせることで行っていました。 こんな設計ではどこかでガタがくると思います。C#ではこういう場合、どのようにプログラムするのでしょうか? できることなら、ひな形となるようなコードを拝見したいのですが… 一例として、添付画像のようなプログラムをどのように実装するか、教えていただけますでしょうか。
- ベストアンサー
- その他(プログラミング・開発)
- Androidのマルチスレッド処理の開始タイミング
組み込みボード上にAndroidOSをのせ、 その上でRS232C通信制御するプログラムを作成しております。 RS232C通信制御についてはThreadクラスを派生させたクラスを 作成し、マルチスレッド処理として、アプリ起動中に、常に動作させたい と考えています。 このとき、RS232C通信制御するスレッドを 開始するタイミング、終了するタイミングはメインアクティビティのどの タイミングで行うのが1番よいのでしょうか? 現状は以下で考えています。 public class MainActivity extends Activity { ComCtrl m_ComCtrl ; // RS232C通信制御スレッド protected void onCreate(Bundle savedInstanceState) { m_ComCtrl = new ComCtrl( null ) ; // スレッド生成 m_ComCtrl.start() ; // スレッド開始 } protected void onDestroy() { m_ComCtrl.halt() ; // スレッド終了(スレッドメインループを終了させる独自メソッド) } }
- ベストアンサー
- Java
- TCP/IP通信について
現在、以下のようにTCP/IP通信のプログラミングを行っており、 サーバ/クライアント別々に4byteのデータ送信を10msec毎に10秒間行っております。 現在、WimdowsVista-Windows7間で各々をサーバ/クライアントとして順に起動し、 相互に4byte送信しているハズが、倍の8byteや12byteとデータが連なって送信されている 事象が発生してます。 OutputStreamではwrite後にflushを行っているので、flush契機でメモリ上に蓄えられた 送信用バッファが送信されるイメージでおりますが、4byteで送信できていないように見えます。 上記について、解決方法をご存じであればご教授お願い致します。 <Server.java> ===== public class Server { public static ServerSocket ss = null; public static Socket soc = null; private static InputStream is = null; private static OutputStream os = null; public static void main(String[] args) { try { // サーバソケット生成 ss = new ServerSocket(5000); soc = ss.accept(); is = soc.getInputStream(); os = soc.getOutputStream(); Thread rcvTh = new ServerRcvThread(is); rcvTh.start(); Thread sndTh = new ServerSndThread(os); sndTh.start(); // 10秒スリープ try{ Thread.sleep(10000); } catch ( Exception e){ e.printStackTrace(); } // スレッド停止 rcvTh.stop(); sndTh.stop(); } catch (IOException e) { e.printStackTrace(); } finally{ try { is.close(); os.close(); soc.close(); ss.close(); } catch (IOException e) { e.printStackTrace(); } } } } class ServerSndThread extends Thread{ private static OutputStream ous = null; ServerSndThread( OutputStream os ){ this.ous = os; } public void run(){ byte sndData[] = new byte[4]; sndData[0] = 0x01; sndData[1] = 0x02; sndData[2] = 0x03; sndData[3] = 0x04; try { while(true){ // データ書込み ous.write(sndData); ous.flush(); System.out.println("データ送信"); // 0.01秒スリープ try{ Thread.sleep(10); } catch ( Exception e){ e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } } class ServerRcvThread extends Thread{ private static InputStream ins = null; ServerRcvThread( InputStream os ){ this.ins = os; } public void run(){ byte rcvData[] = new byte[16]; int size = 0; try { while(true){ // データ読込み size = ins.read(rcvData); System.out.println("size:"+size+"byte"); } } catch (IOException e) { e.printStackTrace(); } } } ===== <Client.java> ===== public class Client { private static Socket soc = null; private static OutputStream os = null; private static InputStream is = null; public static void main(String[] args) { try { // ソケット生成 soc = new Socket("192.168.3.3", 5000); is = soc.getInputStream(); os = soc.getOutputStream(); Thread rcvTh = new ClientRcvThread(is); rcvTh.start(); Thread sndTh = new ClientSndThread(os); sndTh.start(); // 10秒スリープ try{ Thread.sleep(10000); } catch ( Exception e){ e.printStackTrace(); } // スレッド停止 rcvTh.stop(); sndTh.stop(); } catch (IOException e) { e.printStackTrace(); } finally{ try { is.close(); os.close(); soc.close(); } catch (IOException e) { e.printStackTrace(); } } } } class ClientSndThread extends Thread{ private static OutputStream ous = null; ClientSndThread( OutputStream os ){ this.ous = os; } public void run(){ byte sndData[] = new byte[4]; sndData[0] = 0x04; sndData[1] = 0x03; sndData[2] = 0x02; sndData[3] = 0x01; try { while(true){ // データ書込み ous.write(sndData); ous.flush(); System.out.println("データ送信"); // 0.01秒スリープ try{ Thread.sleep(10); } catch ( Exception e){ e.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } } class ClientRcvThread extends Thread{ private static InputStream ins = null; ClientRcvThread( InputStream os ){ this.ins = os; } public void run(){ byte rcvData[] = new byte[16]; int size = 0; try { while(true){ // データ読込み size = ins.read(rcvData); System.out.println("size:"+size+"byte"); } } catch (IOException e) { e.printStackTrace(); } } } =====
- ベストアンサー
- Java
- Javaアプレットとマルチスレッドの組み合わせ
Javaアプレットとマルチスレッドを組み合わせてパラパラ漫画のようなものを作りたいのですがうまくいきません。 import java.awt.Graphics; import java.awt.Image; public class kadai4 extends java.applet.Applet implements Runnable{ Image logoImage[]; Thread runner; int current; int last=6; public void init(){ logoImage=new Image[last]; for(int i=0;i<last;i++){ logoImage[i] = getImage(getCodeBase(),"image/logo" + (i+1) + ".gif"); } } public void start(){ if(runner == null){ runner = new Thread(this); runner.start(); } } public void stop(){ if(runner != null){ runner.stop(); runner=null; } } public void run(){ while(true){ for(int i=0;i<last;i++){ current=i; repaint(); pause(400); } } } public void paint(Graphics g){ g.drawImage(logoImage[current],50,25,50,50,this); } void pause(int time){ try { Thread.sleep(time);} catch (InterruptedException e) {} } } これを実行すると推奨されない API を使用またはオーバーライドしています。というエラーが発生するのですがどうすれば良いでしょうか?他の方法でも構いません
- ベストアンサー
- Java
- コンポーネントの組み込みについて
アプレットでもAWTアプリでもSwingアプリでもなんでもいいんですが、 特定の条件を満たした時に、はじめは表示されていないボタンやテキストフィールドなどを後から表示させたいのですが、できません。 単純にadd()ではできないようで… やり方を教えていただけませんか。。 下は、10秒後にボタンが表示されるように自分で作ってみたサンプルアプレットです。 //<applet code="buttonsample.class" width=300 height=200></applet> import java.applet.*; import java.awt.*; import java.awt.event.*; public class buttonsample extends Applet implements Runnable { int count; //カウント Thread th; //スレッド Button BT; //ボタン public void init() { setLayout(new FlowLayout()); count = 0; BT = new Button(); BT.setLabel("ボタン"); } public void start() { if(th == null) { th = new Thread(this); th.start(); } } public void stop() { th = null; } public void run() { while(count < 10) { repaint(); count++; try { Thread.sleep(1000); } catch(InterruptedException e){} } add(BT); } public void paint(Graphics g) { g.drawString(""+(count+1),100,100); } } <EOS>
- ベストアンサー
- Java
- 通信 中断
どなたか教えていただけないでしょうか ウィルコムのPHSでメールを受信についてです。 今日突然、メール受信時に 「通信が中断されました(00990)」とメッセージが 出てしまい、何度受信しても同じメッセージばかりで メールを読むことができません。 何か原因や対処方法はあるのでしょうか?
- 締切済み
- その他(メールサービス・ソフト)
- repaintが実行されません(iアプリ)
Java初心者なのですが、頑張ってテトリスをiアプリで作ろうと思っています。 何分オブジェクト指向などをあまり理解できていないためソースがいまいち見苦しいかと思いますが、よろしければ手助けしていただけると幸いです。 関係があると思われるメソッドだけを載せます。 以下、ソース----------------------------- public final class Tetris extends Canvas implements Runnable{ /** (変数などの設定が入ります) **/ Thread t = new Thread(this); t.start(); paintFrag = true; Thread tp = new Thread(this); GameLoop(); } //ゲームのメインループ public void GameLoop(){ //オープニングの表示 GameStart(); while(true){ //新しくミノを生成 //ゲームオーバーかどうかも同時にチェック if(CreateMino() == 1){ GameOver(); //ゲームオーバー時のメソッド } while(true){ //1000ミリ秒待つ try{ Thread.sleep(1000); } catch(Exception e){ } //ミノを1つ落下させる //1つ下に固定済みブロックがあれば1を返す if(DropMino() == 1){ break; } } } } public void run(){ //30フレームで画面を再描画 if(paintFrag == true){ while(true){ try{ Thread.sleep(33); } catch(Exception e){ } System.out.println("テスト"); repaint(); } } //こっちではキー状態を監視 else{ while(true){ (まだ未実装です) } } } ソース終わり----------------------------- これで実行した場合、コンソール画面にはきちんと「テスト」とは33ミリ秒毎に表示されるのですが、実際のiアプリの画面には何も表示されずに真っ黒な状態のままです。 GameLoopの「while(true){}」のループを2つとも外した場合、起動してから1000ミリ秒は何も表示されず、1000ミリ秒以上経ってからは1マス落ちた状態のブロックが表示され、それ以後は何も動作がありません。 paintメソッドに「System.out.println("~~");」と記述してもこれはコンソール画面に表示されないので、どうやらGameLoopメソッドがループしている間はpaintメソッド自体が動作していないような感じなのですが、原因がなんなのか検討もつきません。 分かる方いらっしゃいましたらヒントでもいいので回答お願いします。 開発ツールはDoCoMoの公式サイトでダウンロードできるiappliTool for Doja 5.1(FOMA)を、Javaのバージョンは1.4.2_13を使用しています。
- 締切済み
- Java
お礼
close() ですか. connect() で停止しているようだったので、close()は考えもしていませんでした^^; 現在確認ができないので、後日ちょっと試してみます ありがとうございます.