0

クライアント側に単純な文字列を送信したいだけですが、そうしていません。out.println ステートメントをスキップして、残りのプログラムを適切に実行します。out.println は、サーバー側からクライアントに送信するための間違ったステートメントですか?

このコードを使用して「こんにちは」を送信したいだけです。

out.println("hello");

サーバー側のプログラム

public class TcpServerCompareCSV {

    public static void main(String[] args) throws IOException{
        Scanner console = new Scanner(System.in);
        System.out.println("Type in CSV file location: ");
        //String csvName = console.nextLine();
          String csvName = "C:\\Users\\Downloads\\orders.csv";


        ServerSocket serverSocket = null; 

        try { 
             serverSocket = new ServerSocket(57634); 
            } 
        catch (IOException e) 
            { 
             System.err.println("Could not listen on port: 57635."); 
             System.exit(1); 
            } 

        Socket clientSocket = null; 
        System.out.println ("Waiting for connection.....");

        try { 
             clientSocket = serverSocket.accept(); 
            } 
        catch (IOException e) 
            { 
             System.err.println("Accept failed."); 
             System.exit(1); 
            } 

        System.out.println ("Connection successful");
        System.out.println ("Waiting for input.....");

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), 
                                          true); 
        BufferedReader in = new BufferedReader( 
                new InputStreamReader( clientSocket.getInputStream())); 

        String inputLine;
        Boolean comp;
        while ((inputLine = in.readLine()) != null) 
            { 

            ***out.println("hello");***

             if (inputLine.trim().equals("Bye.")) {
                 System.out.println("Exit program"); 
                 break;
                 } 

             Scanner input1 = new Scanner(new File(csvName));
             Scanner input2 = new Scanner(new File(csvName));
             Scanner input3 = new Scanner(new File(csvName));
             Scanner input4 = new Scanner(new File(csvName));

             System.out.println ("Server: " + inputLine); 

             String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
             comp =  compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

             if(comp)
                 out.println(noError);
             else
                 out.println(Error);


             input1.close();
             input2.close();
             input3.close();
             input4.close();



            }
        out.close(); 
        in.close(); 
        clientSocket.close(); 
        serverSocket.close();

    }

クライアント側のプログラム

public class TcpClient {

            public static void main(String[] args) throws IOException {
            String serverHostname = new String ("WA12345"); //127.0.0.1

                if (args.length > 0)
                   serverHostname = args[0];
                System.out.println ("Attemping to connect to host " +
                serverHostname + " on port 57634.");

                Socket echoSocket = null;
                PrintWriter out = null;
                BufferedReader in = null;

                try {
                    // echoSocket = new Socket("taranis", 7);
                    echoSocket = new Socket(serverHostname, 57634);
                    out = new PrintWriter(echoSocket.getOutputStream(), true);
                    in = new BufferedReader(new InputStreamReader(
                                                echoSocket.getInputStream()));
                } catch (UnknownHostException e) {
                    System.err.println("Don't know about host: " + serverHostname);
                    System.exit(1);
                } catch (IOException e) {
                    System.err.println("Couldn't get I/O for "
                                       + "the connection to: " + serverHostname);
                    System.exit(1);
                }

            BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
            String userInput;

                System.out.print ("input: ");

            while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);


                 if (userInput.equals("Bye.")){
                     System.out.println("Exit program");
                       break;        
                 }
              getValueLog(parseFixMsg(userInput,userInput));
                  System.out.print ("input: ");

            }

            out.close();
            in.close();
            stdIn.close();
            echoSocket.close();
            }
4

1 に答える 1

1

クライアント プログラム ( statement によって作成されたin = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));) のソケット入力ストリームから読み取ることはないため、実際に受信しようとすることはありません。

in.readLine()後、ループ内のクライアントプログラムにa が必要です

while ((userInput = stdIn.readLine()) != null) {
                out.println(userInput);

次のようになります。

System.out.println(in.readLine());
于 2013-07-24T15:02:21.663 に答える