如何使用客户端计算机的 Java 套接字在服务器计算机上创建目录?
How to create a directory on a server machine using Java socket of a client machine?
我正在 Java 中编写客户端服务器应用程序。有一次我需要我的 PC 客户端通过套接字在我的 PC 服务器上创建一个目录,只是我无法做到这一点。有人可以帮助我吗?
在服务器上,您可以使用Files#createDirectory()
在文件系统上创建一个目录。您可以使用客户端传递的数据来确定目录的名称。
这是 Java 文档的 link:https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createDirectory-java.nio.file.Path-java.nio.file.attribute.FileAttribute...-
这是 Oracle Java 教程中的 link,其中包含一个示例:https://docs.oracle.com/javase/tutorial/essential/io/dirs.html#create
你需要设计一个通信协议,这是一种你的服务器和你的客户端之间的方言。
我已经为你设计了有史以来最简单的通信协议,只有 2 个命令。
包含2个简单的命令及其含义:
mkdir - 在远程服务器中创建一个目录
退出 - 关闭会话
这意味着您必须编写 2 个程序(服务器和客户端)来实现出色的通信协议。
您可以从实际上 sends/receives 2 个命令的代码开始,假装执行命令并关闭会话。
服务器端:
import java.net.*;
import java.io.*;
public class Server
{
static ServerSocket serverSocket;
static Socket socket;
static BufferedWriter writer;
static BufferedReader reader;
public static void main(String args[])
{
try
{
System.out.println("Hola mundo");
serverSocket = new ServerSocket(12345);
socket = serverSocket.accept();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true)
{
String command = reader.readLine();
if(command.contains("mkdir"))
{
System.out.println("Creating a new directory " + command);
// put yoour code to create a directory with the params
}
else if(command.equals("exit"))
{
System.out.println("Exiting the program");
break;
}
}
}
catch(Exception err)
{
}
}
}
客户端:
import java.net.*;
import java.io.*;
public class Client
{
static Socket socket;
static BufferedWriter writer;
static BufferedReader reader;
public static void main(String args[])
{
try
{
System.out.println("Connecting to the server");
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 12345);
socket = new Socket();
socket.connect(address);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// creating folder
System.out.println("Creating remote folder");
writer.write("mkdir newFolder\r\n");
writer.flush();
// closing server
System.out.println("Sending exit command");
writer.write("exit\r\n");
writer.flush();
socket.close();
}
catch(IOException err)
{
System.out.println(err.getMessage());
}
}
}
现在您的挑战是当 mkdir 命令到达服务器时真正创建文件夹。
编译:
javac Client.java
javac Server.java
我正在 Java 中编写客户端服务器应用程序。有一次我需要我的 PC 客户端通过套接字在我的 PC 服务器上创建一个目录,只是我无法做到这一点。有人可以帮助我吗?
在服务器上,您可以使用Files#createDirectory()
在文件系统上创建一个目录。您可以使用客户端传递的数据来确定目录的名称。
这是 Java 文档的 link:https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createDirectory-java.nio.file.Path-java.nio.file.attribute.FileAttribute...-
这是 Oracle Java 教程中的 link,其中包含一个示例:https://docs.oracle.com/javase/tutorial/essential/io/dirs.html#create
你需要设计一个通信协议,这是一种你的服务器和你的客户端之间的方言。
我已经为你设计了有史以来最简单的通信协议,只有 2 个命令。
包含2个简单的命令及其含义:
mkdir - 在远程服务器中创建一个目录
退出 - 关闭会话
这意味着您必须编写 2 个程序(服务器和客户端)来实现出色的通信协议。
您可以从实际上 sends/receives 2 个命令的代码开始,假装执行命令并关闭会话。
服务器端:
import java.net.*;
import java.io.*;
public class Server
{
static ServerSocket serverSocket;
static Socket socket;
static BufferedWriter writer;
static BufferedReader reader;
public static void main(String args[])
{
try
{
System.out.println("Hola mundo");
serverSocket = new ServerSocket(12345);
socket = serverSocket.accept();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
while(true)
{
String command = reader.readLine();
if(command.contains("mkdir"))
{
System.out.println("Creating a new directory " + command);
// put yoour code to create a directory with the params
}
else if(command.equals("exit"))
{
System.out.println("Exiting the program");
break;
}
}
}
catch(Exception err)
{
}
}
}
客户端:
import java.net.*;
import java.io.*;
public class Client
{
static Socket socket;
static BufferedWriter writer;
static BufferedReader reader;
public static void main(String args[])
{
try
{
System.out.println("Connecting to the server");
InetSocketAddress address = new InetSocketAddress("127.0.0.1", 12345);
socket = new Socket();
socket.connect(address);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// creating folder
System.out.println("Creating remote folder");
writer.write("mkdir newFolder\r\n");
writer.flush();
// closing server
System.out.println("Sending exit command");
writer.write("exit\r\n");
writer.flush();
socket.close();
}
catch(IOException err)
{
System.out.println(err.getMessage());
}
}
}
现在您的挑战是当 mkdir 命令到达服务器时真正创建文件夹。
编译:
javac Client.java
javac Server.java