Я программирую сервер и клиент, клиент отправит файл на сервер, однако мне нужно отправить имя файла вместе, чтобы сервер распознал и записал файл с именем, отправленным клиентом.В настоящее время он не отправляет имя файла, поэтому я должен сообщить серверу имя файла и его путь, где он будет сохранен.Можно ли отправить имя файла и путь, который будет сохранен в файл?И если это возможно, какой фрагмент кода я должен использовать, чтобы иметь возможность указать такую информацию?Если кто-нибудь может мне помочь, я действительно ценю это.
на стороне клиента
public class FileSenderClient {
private void sendFile(SocketChannel socketChannel) throws IOException {
Path path = Paths.get("C:\\SIS\\database.FDB");\\ path to file
FileChannel inChannel = FileChannel.open(path);
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (inChannel.read(buffer) > 0) {
buffer.flip();
socketChannel.write(buffer);
buffer.clear();
}
socketChannel.close();
}
private SocketChannel CreateChannel() throws IOException {
SocketChannel socketChannel = SocketChannel.open();
socketChannel.configureBlocking(true);
SocketAddress sockAddr = new InetSocketAddress("localhost", 9000);
socketChannel.connect(sockAddr);
return socketChannel;
}
public static void main(String[] args) throws IOException {
FileSenderClient client = new FileSenderClient();
SocketChannel socketChannel = client.CreateChannel();
client.sendFile(socketChannel);
}
}
на стороне сервера
public class FileReceiver {
private void readFileFromSocketChannel(SocketChannel socketChannel) throws IOException {
Path path = Paths.get("C:\\Data\\database.FDB"); - here i need to receive
the name from the class FileSenderClient
FileChannel fileChannel = FileChannel.open(path,
EnumSet.of(StandardOpenOption.CREATE,
StandardOpenOption.TRUNCATE_EXISTING,
StandardOpenOption.WRITE)
);
//Allocate a ByteBuffer
ByteBuffer buffer = ByteBuffer.allocate(1024);
while (socketChannel.read(buffer) > 0) {
buffer.flip();
fileChannel.write(buffer);
buffer.clear();
}
fileChannel.close();
System.out.println("Receving file successfully!");
socketChannel.close();
}
private SocketChannel createServerSocketChannel() throws IOException {
ServerSocketChannel serverSocket = null;
SocketChannel client = null;
serverSocket = ServerSocketChannel.open();
serverSocket.socket().bind(new InetSocketAddress(9000));
client = serverSocket.accept();
System.out.println("connection established .." + client.getRemoteAddress());
return client;
}
public static void main(String[] args) throws IOException {
FileReceiver server = new FileReceiver();
SocketChannel socketChannel = server.createServerSocketChannel();
server.readFileFromSocketChannel(socketChannel);
}
}