您好,提前感谢您花时间阅读。我正在尝试使用 TCP 开发一个简单的 Java 文件传输应用程序。到目前为止,使用我的客户端和服务器类,我已经设法为其添加了一个有效的上传方法(将文件上传到运行服务器的计算机)。
我对这方面还很缺乏经验,所以我走得很慢。我还需要添加一个下载选项(从服务器获取文件),列出服务器中的所有文件,以及一个允许我从服务器中删除任何文件的选项。
对于服务器和客户端,我都使用特定的默认文件夹(在本例中为 C:/Sharedfolder)。目前我的问题是:
- 在我当前的服务器代码中,上传到它的文件被重命名为“newfile”。我怎样才能将文件名更改为“oldfile_new”(作为 oldfile 实际原始文件的名称)?
- 使用下面我当前的服务器代码,我可以创建一个客户端类来从服务器下载一个可以使用它的文件吗?我该怎么做?上传部分对我来说很有意义,但我仍在尝试从服务器中找出下载/列出文件。
- 我目前正在使用预定义的主机 IP,但我最终需要修改应用程序,以便客户端发送 UDP 广播以在专用网络上查找服务器。谁能指出我如何做到这一点的任何方向?
我当前的服务器代码如下:
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4555);
} catch (IOException ex) {
System.out.println("Can't setup server on this port number.\n");
}
Socket socket = null;
InputStream is = null;
OutputStream fos = null;
BufferedOutputStream bos = null;
int bufferSize = 0;
System.out.println("Ready...");
try {
socket = serverSocket.accept();
} catch (IOException ex) {
System.out.println("Can't accept client connection.\n");
}
try {
is = socket.getInputStream();
bufferSize = socket.getReceiveBufferSize();
System.out.println("Buffer size: " + bufferSize);
} catch (IOException ex) {
System.out.println("Can't get socket input stream.\n");
}
try {
fos = new FileOutputStream("C:\\Sharedfolder\\newfile");
bos = new BufferedOutputStream(fos);
} catch (FileNotFoundException ex) {
System.out.println("File not found.\n");
}
byte[] bytes = new byte[bufferSize];
int count;
while ((count = is.read(bytes)) > 0) {
bos.write(bytes, 0, count);
}
bos.flush();
bos.close();
is.close();
socket.close();
serverSocket.close();
}
}
任何帮助将非常感激。谢谢 :)