我需要使用以下包将2D矩阵从客户端发送到服务器端:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
我已经从用户那里读取了一个矩阵,我需要将其发送到服务器以对其执行某些操作。如何发送完整的矩阵?我发送的是多个变量,而不仅仅是一个矩阵。我正在发送整数和矩阵。
因此,在尝试了一些我认为可行的方法后,我找到了这个问题的简单解决方案。
客户端代码
// 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();
并且将接收矩阵的服务器端上的代码如下。
// 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();
}
这个对我有效的解决方案可以用于解析任何类型的数据流。