- 締切済み
accept している ServerSocket
ある ServerSocket が accept しているとして、その accept から強制的に抜け出させるにはどうすれば良いのでしょうか? その様なコマンドは存在するのでしょうか? 接続を作るという方法は無しにして・・・・。別のスレッドから中断させる様な・・・・。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- Socket プログラミングについて
先日の質問ではありがとうございました。 今回はソースコードについてですが もしよろしければアドバイスお願いします。 Socket 制御を行うアプリを作成しています。 ・クライアントアプリ ・サーバアプリ の2つから構成していまして同PC上で動作させます。 クライアントから localhost 経由でサーバアプリに接続。 サーバアプリは ServerSocket を生成して accept しています。 サーバアプリで accept により Socket を生成すると その Socket を Thread に引き渡して適宜処理を行います。 その後、 再び別クライアントからの接続を待つために サーバアプリで accept したいのですが そのまま accept を呼び出しても そこで待機せずに新しい Socket を生成しています。 別クライアントからの接続を待機するにはどうしたらいいのでしょうか? ご教授お願いします。
- ベストアンサー
- Java
- JAVAのソケット通信の接続数について
JAVAのソケット通信の接続数について ServerSocket server= new ServerSocket( port ); server.setSoTimeout( 4000 ); Socket socket = server.accept();//クライアントからの接続をまつ 以上のコードを使っていますが、クライアントからの接続数を調べる方法はないでしょうか?
- ベストアンサー
- Java
- 携帯のjavaでthreadを強制中断するには
携帯のjavaでthreadを強制中断するには javaの thread には stop() で強制的に処理を止めることができると思いますが、携帯(DoCoMo)のjava では stop() が使えないのでしょうか? 携帯で思考をしている thread が一定以上時間がかかってしまったなら、諦めて中断させたいのですが。 今は、stop()が使えないので、中断フラグを使って中断させていますが、複雑な思考のなかで、いろいろな所に中断フラグを監視しなければならず、たいへん面倒です。 なにかうまい方法をご存知ならご教授ください。
- ベストアンサー
- Java
- 相手のIPアドレスを知る手段
C言語で、サーバーソケット(accept)でコネクションを確立した後、 接続された相手のIPアドレスを知る手段はありますでしょうか。 Javaでは、java.net.ServerSocketクラスの、getInetAddressという メソッドを利用して知ることができるのですが、C言語ではどうして いいのか分かりません。ご存知の方ご教授よろしくお願いします。
- 締切済み
- その他(インターネット接続・通信)
- C#でスレッド実行中のイベントについて
メインフォームの「処理開始ボタン」をクリックすると別スレッドが起動して、そのスレッド中で重たい処理をさせ、処理中に「中断ボタン」をクリックすると中断してアイドル状態に戻る様なプログラムについてですが、 先ず、Invokeを使わずに直接スレッドを起動すると期待通りの動作となり、Thread.Sleep()中でもボタンクリックのイベントが発生します。 しかし、Invokeとデリゲートを使ったスレッドを起動させるとスレッドの処理が終了するまでイベントが発生せず、行ったきり状態になってしまいます。 処理ループ内にAplication.DoEvent()を入れるとイベントが発生する様になりますが、Thread.Sleep()中はフリーズ状態となります。 Invokeを使ったスレッドでも、Invokeを使わない場合と同じ動作をさせる方法があれば教えて頂けないでしょうか。 どうぞ宜しくお願いします。
- ベストアンサー
- C・C++・C#
- Linuxのsocket接続でacceptできない
Ubuntu 10.10 + gcc4.4 + eclipse で C言語プログラミングをしています。 ソケットを使用したプログラムを試していたのですが、思うように動作しません。 作成したプログラムは以下のようなものです。 ・ローカルマシン上で、サーバプログラム、クライアントプログラムを用意する ・サーバ側はソケット作成後、クライアントが接続するまで listen する ・クライアントはサーバに接続したら、接続した旨を表示する という初歩的なものです。 問題は、サーバ側が accept したときに戻り値 -1 を返却して終了してしまうことです。 以下が作成したソースです。 ■■■▼ サーバ側ここから ▼■■■ #include <sys/socket.h> #include <sys/un.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { int sockfd; struct sockaddr_un srv; socklen_t socklen; /* ソケット名をコマンド入力で受け取る */ if(argc != 2) { puts("USAGE: mksock <filename>"); exit(EXIT_FAILURE); } /* ソケット作成 */ if((sockfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0){ exit(EXIT_FAILURE); } /* srv 初期化 */ memset(&srv, 0, sizeof(srv)); srv.sun_family = AF_UNIX; strncpy(srv.sun_path, argv[1], sizeof(srv.sun_path)); /* バインド */ if((bind(sockfd, (struct sockaddr *)&srv, SUN_LEN(&srv))) < 0){ exit(EXIT_FAILURE); } /* クライアントからの接続待ち */ if((listen(sockfd, 5)) < 0) { exit(EXIT_FAILURE); } printf("socket available: %s, sockfd=%d\n", srv.sun_path, sockfd); /* 接続がある限りくりかえす */ int sockResult; while(1) { sockResult = accept(sockfd, (struct sockaddr *)&srv, &socklen); printf("sockResult = %d, sun_path=%s\n", sockResult, srv.sun_path); if (sockResult < 0) break; puts("new connection granted"); } puts("mksock end"); exit(EXIT_SUCCESS); } ■■■▲ サーバ側ここまで ▲■■■ ●●●▼ クライアント側ここから ▼●●● #include <sys/socket.h> #include <sys/un.h> #include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { int sockfd; struct sockaddr_un cli; socklen_t socklen; /* ソケット名をコマンド入力で受け取る */ if(argc != 2) { puts("USAGE: sockconn <filename>"); exit(EXIT_FAILURE); } /* ソケット作成 */ if((sockfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0){ exit(EXIT_FAILURE); } /* クライアント設定 */ memset(&cli, 0, sizeof(cli)); cli.sun_family = AF_UNIX; strncpy(cli.sun_path, argv[1], sizeof(cli.sun_path)); /* サーバへ接続 */ socklen = SUN_LEN(&cli); if(connect(sockfd, (struct sockaddr *)&cli, socklen)) { exit(EXIT_FAILURE); } printf("connected to socket %s\n", cli.sun_path); exit(EXIT_SUCCESS); } ●●●▲ クライアント側ここまで ▲●●● これから作成されたバイナリを同一フォルダに置いて、作成ユーザで、カレントディレクトリで実行しました。 以下が実行時の入出力です(カッコ内は実行順序)。 ■▼ サーバ側ここから ▼■ $ ./mksock jjj1…(1) $ socket available: jjj1, sockfd=3 $ sockResult = -1, sun_path=jjj1 $ mksock end ■▲ サーバ側ここから ▲■ ●▼ クライアント側ここから ▼● $ ./sockconn jjj1…(2) $ connected to socket jjj1 ●▲ クライアント側ここから ▲● 上記のように、サーバ側が accept 時に -1 を返却しています。 パーミッションについては以下になっています。 srwxr-xr-x 1 hoge hoge 0 2011-09-04 21:36 jjj1 -rwxr--r-- 1 hoge hoge 86870 2011-09-04 21:36 mksock -rwxr--r-- 1 hoge hoge 86775 2011-09-04 21:36 sockconn パーミッションを見る限り、ソケットファイルにはアクセスできているかと。 おそらく環境周りではないかと思いますが、考えつきません。 linux プログラミングに詳しいかた、よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- 5chワッチョイIP表示について
5chのワッチョイでIPを表示する設定になっているかどうかはどうすれば わかりますか? ワッチョイとは、5ch(旧2ch)やしたらば掲示板に於いて 特定の条件を満たしたレスやスレッドで強制的に表示される 妙なニックネームの1つ。 また、そこから転じて、その妙なニックネーム等を強制的に表示させる コマンドを指す。コマンドを使う行為の事を「ワッチョイを入れる」、 「ワッチョイを導入する」と言われたり、コマンドが 使われているスレッドに対して「このスレはワッチョイが入っている」と 言われる事も。 https://dic.nicovideo.jp/a/%E3%83%AF%E3%83%83%E3%83%81%E3%83%A7%E3%82%A4
- ベストアンサー
- 5ちゃんねる(2ちゃんねる)
- 通信の中断 doja 3.0
HttpConnection のconnectでサーバと通信する際に、なかなかつながらないときはユーザー操作で通信をキャンセルできるようにもくろんでいます。 浮かぶ方法としては、 #1 通信用のクラスでRunnableを実装 #2 通信時にこのスレッドを生成 #3 中止のキーイベントで、スレッドを強制終了 だったのですが、stop(), suspend() はJ2SEでも推奨されていないせいか、コンパイルでシンボルエラーをくらってしまいます。 他のアプリで通信中断をしているアプリも見かけたことがあるのですが、あれはどうやっているんでしょうか。 アドバイスをお願いします。
- ベストアンサー
- Java
- パソコンからの出力はできるが、本体にコピーしたいい用紙をセットするとスキャンできません。電源をいれなおしてくださいとと表示され、入れ直しても印刷ができない
- お使いの環境はMacOSであり、無線LAN接続です。関連するソフト・アプリはありません。電話回線の種類はケーブル回線です。
- ブラザー製品についての質問です。
お礼
ありがとうございます。早速、試してみます。