2016-10-17 9 views
1

私はコンソールを使ってメッセージを出力するシンプルなソケットチャットを書いています。
ユーザー入力の前にコンソールにJavaで文字を書く

I: writing my input here, but 
Other_user: hi! here is a message for you. 
I: it splits to different lines, which is 1) very inconvenient 2) cannot see which simbols i deleted if press backspace 

だから、何であるか私が求めています、どのように私のようなこの
(何かを避けることができます。問題は、一人のユーザーのタイプのメッセージ、そして同時に、1つを取得するとき、彼の入力が中断していることです。メッセージが受信された場合は、シンボルの入力をチェックし、存在する場合はそれらを覚えていて、コンソールで最後のストロークを削除し、メッセージを出力して、そのストロークを再作成します。
EDIT:添付画像message interleaving

+0

私はそれが欲しいと思うので、私は奇跡を期待していないでしょう:)ただ入力され、sthが入力されてまだ送られていないときにあなたの出力待ちをするものがないので、入力は中断されます。通常のチャットでは同じように見えますが、気付くように、2つの別々のボックスがあります.1つは入力用、2つ目はあなたと友人のメッセージを点滅させるだけです。 – kolboc

+0

あなたは解決策を見つけましたか? – Ufkoku

+0

@Ufokuu noup。私が覚えている限り、私は結論に至りました。それは、スタンドアートでの操作は、そのような機会を与えません。 – Worm359

答えて

0

固有のコードなしで伝えるのは難しいが、オプションは、ソケットの入力、出力のための1つを処理するために、二つのスレッド、1を使用することです。これらをSystem.inとSystem.outにそれぞれ添付します。両方を行うために1つのスレッドしか使用していないようです。

+0

それがどのように役立つか分かりません。 System.inとSystem.outの両方がコンソールで動作するので、次のように新しい文字を印刷してコンソールに書き込むのは当然です。 – Worm359

+0

投稿に画像が追加されました – Worm359

+0

私は理解しています。単一のリソースが使用されているので、ライターまたはユーザーのいずれかがコンソールを使用できるようにするには、何らかの同期方法を使用する必要があります。これは簡単な投稿をはるかに超えています。あなたがそのアプローチを再設計する可能性はありますか?結論は、あなたが求めているのは自明ではない – ryonts

関連する問題