使用 TCP 连接(套接字编程)在 Java 中将 2D 矩阵从客户端发送到服务器
Send a 2D Matrix from Client to Server in Java using TCP connection (Socket Programming)
我需要使用以下包将二维矩阵从客户端发送到服务器端:
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();
}
这个对我有用的解决方案可用于解析任何类型的数据流。
我需要使用以下包将二维矩阵从客户端发送到服务器端:
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();
}
这个对我有用的解决方案可用于解析任何类型的数据流。