I need to send a 2D matrix from the client to the server-side using the following packages:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.net.Socket;
I have read a matrix from the user and I need to send to the server to perform certain operations on it. How do I send the complete matrix across? I am sending multiple variables and not just a matrix. I am sending integers and a matrix.
Advertisement
Answer
So after trying out something I thought could work, I found a simple solution to this problem.
Client-Side code
// Make a new client side connection Socket clientSocket = new Socket("localhost", 9000); // Create an output stream DataOutputStream dataOutput = new DataOutputStream(clientSocket.getOutputStream()); // Send data to the server // Send the number of nodes and the matrix dataOutput.writeInt(nodes); dataOutput.flush(); for (int i = 0; i < nodes; i++) for (int j = 0; j < nodes; j++) dataOutput.writeInt(adjMatrix[i][j]); dataOutput.flush();
and the code on the server-side which would receive the matrix is as follows.
// create a server socket and bind it to the port number ServerSocket serverSocket = new ServerSocket(9000); System.out.println("Server has been started"); while(true){ // Create a new socket to establish a virtual pipe // with the client side (LISTEN) Socket socket = serverSocket.accept(); // Create a datainput stream object to communicate with the client (Connect) DataInputStream input = new DataInputStream(socket.getInputStream()); // Collect the nodes and the matrix through the data int nodes = input.readInt(); int adjMatrix[][] = new int[nodes][nodes]; // Create the matrix for (int i = 0; i < nodes; i++) for (int j = 0; j < nodes; j++) adjMatrix[i][j] = input.readInt(); }
This solution worked for me can be used to parse any type of data stream.