import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class DownLoadServer {
File root = new File("d:/txt");
public void action() throws Exception {
System.out.println("----------Server----------");
ServerSocket ss = new ServerSocket(8000);
while (true) {
Socket socket = ss.accept();
InnerThread t = new InnerThread(socket);
t.start();
}
}
class InnerThread extends Thread {
Socket socket;
public InnerThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
String yn = "n";
File[] files = root.listFiles();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket
.getOutputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
BufferedOutputStream bos = new BufferedOutputStream(socket
.getOutputStream());
do {
System.out.println("----------");
System.out
.println("socket" + socket.getReceiveBufferSize());
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < files.length; i++) {
buffer.append(
i + ", " + files[i].getName() + ", "
+ files[i].length()).append("@@@");
}
pw.println(buffer.toString());
pw.flush();
String numStr = br.readLine();
File downloadFile = files[Integer.parseInt(numStr)];
pw.println(downloadFile.getName() + "_"
+ downloadFile.length());
pw.flush();
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(downloadFile));
int b = -1;
while ((b = bis.read()) != -1) {
bos.write(b);
}
bos.flush();
socket.getOutputStream().flush();
bis.close();
yn = br.readLine();
System.out.println(yn);
} while ("y".equals(yn));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) throws Exception {
DownLoadServer server = new DownLoadServer();
server.action();
}
}
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; public class DownLoadClient { public void action() throws Exception { System.out.println("----------Client----------"); Socket socket = new Socket("localhost",8000); String yn = "n"; BufferedReader br = new BufferedReader(new InputStreamReader(socket .getInputStream())); BufferedInputStream bis = new BufferedInputStream(socket .getInputStream()); PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket .getOutputStream())); BufferedReader console = new BufferedReader(new InputStreamReader( System.in)); do { String line = br.readLine(); String[] filesInfo = line.split("@@@"); for (int i = 0; i < filesInfo.length; i++) { System.out.println(filesInfo[i]); } String numStr = console.readLine(); pw.println(numStr); pw.flush(); String info = br.readLine(); String fileName = info.substring(0,info.lastIndexOf("_")); long len = Long.parseLong(info.substring(info.lastIndexOf("_")+1)); System.out.println(fileName); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(new File("d:/" + System.currentTimeMillis() + "_" + fileName + ".txt"))); System.out.println(len); for(int i=0;i<len;i++){ bos.write(bis.read()); } bos.flush(); bos.close(); yn = console.readLine(); pw.println(yn); pw.flush(); } while ("y".equalsIgnoreCase(yn)); socket.close(); } public static void main(String[] args) throws Exception { DownLoadClient client = new DownLoadClient(); client.action(); } }
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; public class DownLoadClient { public void action() throws Exception { System.out.println("----------Client----------"); Socket socket = new Socket("localhost",8000); String yn = "n"; BufferedReader br = new BufferedReader(new InputStreamReader(socket .getInputStream())); BufferedInputStream bis = new BufferedInputStream(socket .getInputStream()); PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket .getOutputStream())); BufferedReader console = new BufferedReader(new InputStreamReader( System.in)); do { String line = br.readLine(); String[] filesInfo = line.split("@@@"); for (int i = 0; i < filesInfo.length; i++) { System.out.println(filesInfo[i]); } String numStr = console.readLine(); pw.println(numStr); pw.flush(); String info = br.readLine(); String fileName = info.substring(0,info.lastIndexOf("_")); long len = Long.parseLong(info.substring(info.lastIndexOf("_")+1)); System.out.println(fileName); BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(new File("d:/" + System.currentTimeMillis() + "_" + fileName + ".txt"))); System.out.println(len); for(int i=0;i<len;i++){ bos.write(bis.read()); } bos.flush(); bos.close(); yn = console.readLine(); pw.println(yn); pw.flush(); } while ("y".equalsIgnoreCase(yn)); socket.close(); } public static void main(String[] args) throws Exception { DownLoadClient client = new DownLoadClient(); client.action(); } }