0

I just want to send a simple string to the client side, however it is not doing so. It will just skip the out.println statement and just do the rest of the program properly. Is out.println the wrong statement for sending to the client from the server side?

I just want to send "hello" by using this code.

out.println("hello");

program for server side

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();

    }

program for client side

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()在循环中的客户端程序中,之后

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

它应该如下所示:

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