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

标签 java sockets server client

我正在用 Java 编写一个客户端服务器应用程序。有一次,我需要我的 PC 客户端通过套接字在我的 PC 服务器上创建一个目录,但我无法实现这一点。有人可以帮助我吗?

最佳答案

您需要设计一个通信协议(protocol),这是服务器和客户端交谈的一种方言。

我为您设计了有史以来最简单的通信协议(protocol),只有 2 个命令。

由2个简单的命令组成及其含义:

mkdir - 在远程服务器中创建目录

退出 - 关闭 session

这意味着您必须编写 2 个程序(服务器和客户端)来实现出色的通信协议(protocol)。

您可以从实际发送/接收 2 个命令的代码开始,假装执行该命令并关闭 session 。

服务器端:

    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 - 如何使用客户端计算机的Java套接字在服务器计算机上创建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805779/

相关文章:

java - 用于 CAD NC 程序的 Lexer

java - 客户端和服务器套接字之间交换的 "messages"结尾

c# - 如何知道tcp服务器是否处于监听状态

闲置一段时间后出现 node.js ECONNRESET 错误

javascript - Express 服务器和服务动态变化的值

java - 为什么 ManagedChannelBuilder 没有用于与服务器建立 TLS 连接的 TLS 参数?

java - BigDecimal如何做到没有 float 不准确?

java - java中什么时候运行非静态 block ?

Python ZMQ 响应程序未收到消息

c - 使用 TCP/IP 协议(protocol)的 c 中的服务器客户端应用程序