简体   繁体   English

如何使用客户端机器的 Java 套接字在服务器机器上创建目录?

[英]How to create a directory on a server machine using Java socket of a client machine?

I'm writing a client server application in Java.我正在用 Java 编写客户端服务器应用程序。 At one point I need my PC client to create a directory on my PC server via socket, only I could not make it happen.有一次,我需要我的 PC 客户端通过套接字在我的 PC 服务器上创建一个目录,但我无法实现。 Can someone help me?有人能帮我吗?

You need to design a communication protocol , this is a type of dialect in which your server and your client speak.您需要设计一个通信协议,这是一种您的服务器和您的客户端使用的方言。

i have designed the simplest communication protocol ever for you, that only has 2 commands.我为您设计了最简单的通信协议,只有 2 个命令。

Consist in 2 simple commands and its meaning:由 2 个简单命令及其含义组成:

mkdir - create a directory in the remote server mkdir - 在远程服务器中创建一个目录

exit - close the session退出- 关闭会话

this means that you have to write 2 programs (server and client) that implement your great communication protocol.这意味着您必须编写 2 个程序(服务器和客户端)来实现您的出色通信协议。

you can start from this code that actually sends/receives 2 commands and pretend executing the command and close the session.您可以从这段实际发送/接收 2 个命令的代码开始,并假装执行该命令并关闭会话。

Server side:服务器端:

    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)
        {

        }
    }
}

Client side :客户端 :

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());
        }
    }
}

Now your challenge is to make really the folder is created when the mkdir command reaches the server.现在您的挑战是在 mkdir 命令到达服务器时真正创建文件夹。

Compilation:汇编:

javac Client.java

javac Server.java

On the server, you can use Files#createDirectory() to create a directory on the filesystem.在服务器上,您可以使用Files#createDirectory()在文件系统上创建目录。 You might use data passed by the client to determine the name of the directory.您可以使用客户端传递的数据来确定目录的名称。

Here's a link to the Javadoc: https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createDirectory-java.nio.file.Path-java.nio.file.attribute.FileAttribute...-这是 Javadoc 的链接: https : //docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#createDirectory-java.nio.file.Path-java.nio.file .attribute.FileAttribute...-

Here's a link in Oracle's Java Tutorials that includes an example: https://docs.oracle.com/javase/tutorial/essential/io/dirs.html#create这是 Oracle 的 Java 教程中的一个链接,其中包含一个示例: https : //docs.oracle.com/javase/tutorial/essential/io/dirs.html#create

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Java11在远程机器中创建文件/目录 - How to create a file / directory in remote machine using Java11 一台机器可以使用Java中的套接字同时充当客户端和服务器吗? - Can one machine act as client and server at same time using socket in Java? 在本地计算机上使用Java从服务器打开目录 - Open directory from server using Java on local machine 使用VirtualBox在虚拟机上测试客户端/服务器Java应用程序 - Testing a client/server Java application on a virtual machine using VirtualBox 如何使用 IP 地址和端口号连接到服务器套接字? (客户端运行在与服务器不同的机器上) - How do I connect to the server socket using the ip address and port number? (client is running on a different machine than server) 是否可以在同一台机器上运行套接字服务器和套接字客户端? - Is it possible to run a socket server and socket client on the same machine? 如何使用服务器端代码在客户端计算机中创建和执行批处理文件? - How do I create and execute batch file in client machine using server side code? 与客户端连接时如何浏览服务器计算机的文件系统(java) - How to browse the file system of a server machine when connecting with a client (java) 使用小程序在客户端计算机上创建目录 - Creating a directory on client machine using applet 如何使用Java,JavaScript获取客户端机器Java版本 - How to get client machine java-version using java,javascript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM