質問: Swingを使ったGUIチャットアプリを作ろうと思っているのですが、その前段階としてCUIチャットプログラムを作ろうと思います。今回の質問はそのCUIチャットプログラムの実装方法に関するものです。 CUIチャットプログラムの仕様は以下のようになります。 ・2つのパソコンのみで通信するので、片方がサーバープログラム、もう片方がクライアントプログラムとなる。なので、サーバープログラム、クライアントプログラムの順に起動する。 ・ソケット確立後はサーバープログラム、クライアントプログラムともに、相手からのメッセージを受信したらコンソールにその受信メッセージを表示し、コンソールに送信メッセージを入力し改行すると相手にメッセージを送る。 以上のようなプログラムを作ろうと思うのですが、Javaプログラミングの経験が乏しく実装方法が良く分かりません。簡単な実装例をご教授願えないでしょうか。 以下に自分なりに調べた上で生じた疑問を書いておきます。こちらの方も答えて頂けると幸いです。 ・ソケット通信では日本語が扱えないのだろうか。日本語を送受信するにはどう実装すれば良いか? ・相手からのメッセージを受信するスレッドと、コンソール入力を監視するスレッドを作らなければならないのだろうか?その実装方法は? よろしくお願いします。
回答: 色々と書いてはいるが、それでは丸投げと変わらんぞ。 必要なのは、仕様を細々とした部品に分解することだ。そしてそれらの部品を一つ一つ作り、分からなければ使えそうなサンプルを書籍やネットで探して、組み合わせる。 どんな大きなシステムも、小さな部品の組み合わせだ。 最初から動くモノを要求しないで、まずは自分の頭と手を動かす。 その上で解らないところを、ピンポイントで質問しよう。 ソケット通信は、アプリレベルで見ればbyte配列の送受信あって(Javaではstreamにラップしているが)、このレベルではどんな文字コードとも関係がない。 これに対して両端のエンコーダ・デコーダに同じものを用意すれば、特定の文字コードで送受信することになる。 ある特定の文字コードで書かれたテキストファイルを読むとき、何をどう指定するか?と同じだ。 スレッド1つでもできないことはないが、大抵は送受信で1ワーカースレッドずつ、入力監視にメインスレッドを充てるのではないかな。