2017-10-17 4 views
-3

複数のクライアントにメッセージを送受信できるサーバーを作ろうとしました。しかし、私はクライアントが私が望むサーバーにメッセージを送信しないという問題を抱えています。私はまだサーバーの記述部分を追加していませんでしたが、今はサーバーがクライアントからのメッセージを読むようにしようとしています。どのようなヘルプにも感謝します。ここに私のサーバーと私のクライアントです:Javaチャットメッセージを読み書きできるサーバー

public class Main { 


public static ArrayList<PrintWriter> writers = new ArrayList<PrintWriter>(); 
public static void main(String[] args) { 
    try { 
     ServerSocket sock = new ServerSocket(9898); 
     while (true) { 
      try { 
       Socket client = sock.accept(); 
       PrintWriter writer = new PrintWriter(client.getOutputStream()); 
       writers.add(writer); 
       Thread t = new Thread(new Handler(client)); 
       t.start(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    System.out.println("Server Started"); 
} 

}

public class Handler implements Runnable { 
private Socket client; 

public Handler(Socket client) { 
    this.client = client; 
} 
@Override 
public void run() { 
    try { 
     //Streams--------------------------------- 
     OutputStream out = client.getOutputStream(); 
     PrintWriter writer = new PrintWriter(out); 

     InputStream in = client.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     //---------------------------------------- 


     String s = null; 
     while(true) { 
      if((s=reader.readLine()) != null) { 
     }  System.out.println(s); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

}

パブリッククラスマネージャはRunnableを{

Socket sockel; 
String pcname = System.getProperty("user.name"); 
BufferedReader reader; 
PrintWriter writer; 
@Override 
public void run() { 
    try { 
     sockel = new Socket("localhost", 9898); 
     //Streams 
     reader = new BufferedReader(new InputStreamReader(sockel.getInputStream())); 
     writer = new PrintWriter(sockel.getOutputStream()); 
     //-------------- 
     System.out.println("Connected to: " + sockel.getInetAddress()); 
     writer.write("hello"); 
     writer.flush(); 
     System.out.println("here"); 
     String command = reader.readLine(); 
     while(!command.equalsIgnoreCase("close" + pcname)) { 
      System.out.println("Got Message: " + command); 
     } 
    }catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 

}

+0

デバッグヘルプ(「なぜこのコードは機能していませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問を改善するために "編集"リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat

+0

例外はありますか? – Berger

+0

あなたは "コードが動作していません。ここのコード" ...と今何がありますか?私たちはあなたのコードを読んで、たぶん走って、あなたの問題を解決するために何が問題になるのか想像しましたか?申し訳ありませんが、これはこのサイトの仕組みではありません。プログラミングを学ぶことの全体の考え方は、問題を理解して修正するのにかかる時間を費やすことです。あなたは、その厄介な作品の**すべて**を他の人たちに委ねようとしています。ヒント:*プレビュー*機能が存在するため、あなたの入力のフォーマットを確認することができます。**事前に**送信してください。 – GhostCat

答えて

0

を実装していますはしませんでしたクラスマネージャを使用する。 プロジェクトを2つ作成して1つのクライアントと別のサーバーを作成し、サーバープロジェクトを開始してからクライアントを起動する必要があります。

これがあなたを助けてくれることを願っています。

関連する問題