2016-07-11 3 views
0

パートナーアプリケーションでは、クライアントとサーバーのコードとポートを交換しました。これら2つのコードを2つの別々の端末で実行します。彼らはお互いに接続することができましたが、ある端末から別の端末にメッセージを送信できませんでした。Javaベースの2ウェイチャットアプリケーションが動作しない

import java.net.*; 
import java.io.*; 
import java.util.Scanner; 
class ChatHead1 
{ 
public static void main()throws Exception 
{ 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

    //Client 
    Socket sock = new Socket("127.0.0.1", 2000); 
    OutputStream ostream = sock.getOutputStream(); 
    DataOutputStream dos = new DataOutputStream(ostream); 
    System.out.print("\nYou:"); 
    String message1 = br.readLine(); //Inputting Message For Sending 
    dos.writeBytes(message1); 

    //Server 
    ServerSocket sersock = new ServerSocket(5000); 
    System.out.print("\nThem: "); 
    Socket sockServ = sersock.accept(); 
    InputStream istream = sockServ.getInputStream(); 
    DataInputStream dstream = new DataInputStream(istream); 
    String message2 = dstream.readLine(); 
    System.out.println(message2); //Printing Received Message 

    //Client Close 
    dos.close(); 
    ostream.close(); 
    sock.close(); 

    //Server Close 
    dstream .close(); 
    istream.close(); 
    sockServ.close(); 
    sersock.close(); 
} 
} 
+0

dos.flush();を試してみて、 "ターミナル?"より具体的に言えば、私にとって「端末」はVT100を意味しますが、私はあなたがJava上でJavaを実行しているのか疑問です。あなたのハードウェアとネットワークの構成はまったく何ですか?また、動作しないと言ったときにどんなエラーが発生していますか? – markspace

+0

@markspace、私はコマンドプロンプトを意味しました。不適切な言葉をおかけして申し訳ありません。私は入力ストリームを開始する前に出力ストリームを閉じることで動作しています。そのような迅速な応答をありがとう..:D –

答えて

0

私はあなたが唯一のサーバ/クライアント、そのために双方向の接続を使用する必要があることを示唆しています。
私はなぜあなたがクライアントサーバを使用しているのか分かりません。

dos.writeBytes(message1);

+0

クライアントとサーバーは、私がメッセージを送受信するコードを表すために使用した唯一の用語です。 * Client *コードを使用し、InputStreamを使用しない場合、どのようにメッセージを受け取ることができますか? –

+0

Nevermind、働いています。Server'sを起動する前にクライアントのストリームを閉じる必要があることが分かりました。しかし、フラッシュについて思い出させるために感謝します。:D –

+0

彼は意味:このコードはすべて1つのプログラムにあります。 – ABuckau

関連する問題