简体   繁体   中英

Simple Java Networking Program

I'm new to Java programming and I'm just trying to get a very basic networking program to work.

I have 2 classes, a client and a server. The idea is the client simply sends a message to the server, then the server converts the message to capitals and sends it back to the client.

I'm having no issues getting the server to send a message to the client, the problem is I can't seem to store the message the client is sending in a variable server side in order to convert it and so can't send that specific message back.

Here's my code so far:

SERVER SIDE

     public class Server {

         public static void main(String[] args) throws IOException {
             ServerSocket server = new ServerSocket (9091);

             while (true) {
                 System.out.println("Waiting");

                 //establish connection
                 Socket client = server.accept();
                 System.out.println("Connected " + client.getInetAddress());


             //create IO streams
                 DataInputStream inFromClient = new DataInputStream(client.getInputStream());
                 DataOutputStream outToClient = new DataOutputStream(client.getOutputStream());

                 System.out.println(inFromClient.readUTF());

                 String word = inFromClient.readUTF();

                 outToClient.writeUTF(word.toUpperCase());
                 client.close();
             }
         }

     }

CLIENT SIDE

public class Client {

    public static void main(String[] args) throws IOException {

        Socket server = new Socket("localhost", 9091);

        System.out.println("Connected to " + server.getInetAddress());

        //create io streams
        DataInputStream inFromServer = new DataInputStream(server.getInputStream());
        DataOutputStream outToServer = new DataOutputStream(server.getOutputStream());

        //send to server
        outToServer.writeUTF("Message");

        //read from server
        String data = inFromServer.readUTF();

        System.out.println("Server said \n\n" + data);
        server.close();
    }
}

I think the problem might be with the 'String word = inFromClient.readUTF();' line? Please can someone advise? Thanks.

You're discarding the first packet received from the client:

System.out.println(inFromClient.readUTF()); // This String is discarded

String word = inFromClient.readUTF();

Why not swap these?

String word = inFromClient.readUTF(); // save the first packet received
System.out.println(word);   // and also print it

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM