2017-04-06 4 views
0

このプログラムの目的は、サーバーからのテキストメッセージ(UTF-8文字列)をクライアントとその逆の場合は、2人が電話でお互いにテキストを入力するようになります(1台の電話機はクライアント、1台の電話機はサーバー)文字列 "For input string:" -l "がコードに存在しないにもかかわらず実行され、出力される(Javaスレッド)

次のスクリーンショットでは、 "For input string:コードに実際には存在しない "-l"

enter image description here

は、1つのクライアントである、1はサーバであり、1は主な機能を持って、三つのファイルがあります。

コマンドライン引数 "-l"(存在する場合)は、サーバスレッド/サーバファイルを実行します。

"-l"が存在しない場合、クライアントスレッド/クライアントファイルが実行されます。

DirectMessengerCombined.javaコード(メイン関数ファイル):

public class DirectMessengerCombined 
{ 

    public static void main(String[] args) 
    { 
     DirectMessengerClient Client1 = new DirectMessengerClient(); 
     DirectMessengerServer Server1 = new DirectMessengerServer(); 
      for (int i = 0; i < args.length; i++) 
      { 
       boolean Client = false; 
       boolean Server = false; 
       if(args[0].equals("3000")) 
       { 
        Client1.ClientRun(args); 
       } 
      switch (args[0].charAt(0)) 
       { 
       case '-': 
       if(args[0].equals("-l")) 
       { 
        Server = true; 
        if(Server==true) 
        { 
         Server1.ServerRun(args); 
        } 
       } 

       } 
      i=args.length + 20; 



      } 
    } 

} 

DirectMessengerServer.javaコード:

import java.io.*; 
import java.net.*; 
import java.util.*; 
//import static java.nio.charset.StandardCharsets.*; 
public class DirectMessengerServer 
{ 
    void ServerRun(String[] args) 
    { 

     Thread Server = new Thread() 
     { 
       public void run() 
       { 
        //String address="127.0.0.1"; 
        System.out.println("Server thread is now running"); 
        try 
        { 
         System.out.println("Try block begins.."); 
         int port_number1= Integer.valueOf(args[0]); 
         System.out.println("Port number is: " + port_number1); 
         // listener = new ServerSocket(port_number1); 
         // SocketAddress addr = new InetSocketAddress(address, port_number1); 
         System.out.println("Listening for connections.."); 
         System.out.println("Listening on port: " + (port_number1)); 
         // client_socket= server_socket.accept(); 
        // BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8")); 
         // PrintWriter output= new PrintWriter(client_socket.getOutputStream(), true); 
         // outputstream = new DataOutputStream(smtpSocket.getOutputStream()); 
         // inputstream = new DataInputStream(smtpSocket.getInputStream()); 
         // String input_line= reader.readLine(); 
         System.out.println("Received from client: "); 
         // System.out.println(input_line); 
         // output.println(input_line); 
          } 
          catch (Exception e) 
          { 
           System.out.println(e.getMessage()); 
          } 
         } 
     }; 
     Server.start(); 
    } 
} 

DirectMessengerClient.javaコード:

import java.io.*; 
import java.net.*; 
import java.util.*; 
import static java.nio.charset.StandardCharsets.*; 
public class DirectMessengerClient 
{ 
    //static String[] arguments; 
    //public static void main(String[] args) 
    //{ 
    // arguments = args; 
    //} 
    public DirectMessengerClient() 
    { 

     //System.out.println("test."); 

    } 
    public void ClientRun(String[] args) 
    { 
     Thread Client = new Thread() 
     { 
      public void run() 
      { 
       System.out.println("Client thread is now running"); 
       // String address="127.0.0.1"; 
       // ServerSocket server_socket = null; 
       // Socket client_socket = null; 
       //Socket smtpSocket = null; 
       DataOutputStream outputstream; 
       DataInputStream inputstream; 
       try 
       { 
          System.out.println("Try block begins.."); 
          int port_number1= Integer.valueOf(args[0]); 
          System.out.println("Port number is: " + port_number1); 
          // listener = new ServerSocket(port_number1); 
         // SocketAddress addr = new InetSocketAddress(address, port_number1); 
          System.out.println("Listening for connections.."); 
          System.out.println("Listening on port: " + Integer.toString(port_number1)); 
         // client_socket= server_socket.accept(); 
         // BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8")); 
         // PrintWriter output= new PrintWriter(client_socket.getOutputStream(), true); 
         // outputstream = new DataOutputStream(smtpSocket.getOutputStream()); 
         // inputstream = new DataInputStream(smtpSocket.getInputStream()); 
         // String input_line= reader.readLine(); 
          System.out.println("Received from client: "); 
          // System.out.println(input_line); 
         // output.println(input_line); 
       } 
       catch (Exception e) 
       { 
          System.out.println(e.getMessage()); 
       } 

      } 
     }; 

    Client.start(); 
    } 
} 

私の質問は:どのように入力文字列 "-l"が実際にコードに存在しないときに出力される出力 "ですか?

答えて

2

System.out.println(e.getMessage());で印刷されています。

混乱していることがわかりますが、例外全体を説明するものではありません。代わりにe.printStackTrace();を使用してください。

あなたは完全な例外を見ることができた後、

int port_number1= Integer.valueOf(args[1]); 

int port_number1= Integer.valueOf(args[0]); 

を変更することで、あなたのコードを修正

+0

ありがとうございました。私はそれを感謝する –

+0

問題はない、だから私は(主に)ここにいる。 – Kayaman

関連する問題