发送和接收文件
发送和接收文件基本上分解为两个简单的代码段.
接收代码:
ServerSocket serverSoc = new ServerSocket(LISTENING_PORT);
Socket connection = serverSoc.accept();
// code to read from connection.getInputStream();
发送代码:
File fileToSend;
InputStream fileStream = new BufferedInputStream(fileToSend);
Socket connection = new Socket(CONNECTION_ADDRESS, LISTENING_PORT);
OutputStream out = connection.getOutputStream();
// my method to move data from the file inputstream to the output stream of the socket
copyStream(fileStream, out);
发送代码将在要发送文件的发送代码的计算机上运行.
接收代码需要放在一个循环中,所以每当有人想要连接到服务器时,服务器可以处理该请求,然后返回等待serverSoc.accept().
为了允许在两台计算机之间发送文件,每台计算机都需要运行服务器(接收代码)来监听传入的文件,并且他们在发送文件时都需要运行发送代码.
进度条
Swing中的JProgressBar容易使用.然而,让它正常工作并显示文件传输的当前进度稍微更困难.
要获取一个进度条,只能将其放在一个表单上,只需将其放在一个JFrame上,或者设置setIndeterminate(false),这样它就可以显示你的程序正在运行.
要正确实现进度条,您将需要创建自己的SwingWorker实现.Java教程在他们的lesson in concurrency中有一个很好的例子.
这是一个相当困难的问题.如果您需要更多帮助,我会建议自己提出问题.