TCP文件下载案例:
题目:
思路:
一、TCPDownloadServer:
代码如下:
package com.evaStudy.encap.API;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author EVA LEE
* @version 1.0
* @time 17/1/2024 6:02 pm
*/
public class TCPDownloadServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(9999);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
byte[] b = new byte[1024];
int len = 0;
String downloadFileName = "";
while ((len = inputStream.read(b)) != -1) {
downloadFileName = new String(b, 0, len);
}
System.out.println(downloadFileName);
String resFileName = "";
if ("1".equals(downloadFileName)) {
resFileName = "/Users/eval/Desktop/1.png";
} else {
resFileName = "/Users/eval/Desktop/2.jpeg";
}
BufferedInputStream bis =
new BufferedInputStream(new FileInputStream(resFileName));
byte[] bytes = StreamUtils.streamToByteArray(bis);
BufferedOutputStream bos =
new BufferedOutputStream(socket.getOutputStream());
bos.write(bytes);
socket.shutdownOutput();
bis.close();
bos.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
二、TCPDownloadClient:
代码如下:
package com.evaStudy.encap.API;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/**
* @author EVA LEE
* @version 1.0
* @time 17/1/2024 6:02 pm
*/
public class TCPDownloadClient {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
String downloadFileName = scanner.next();
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
OutputStream outputStream = socket.getOutputStream();
outputStream.write(downloadFileName.getBytes());
socket.shutdownOutput();
BufferedInputStream bis =
new BufferedInputStream(socket.getInputStream());
byte[] bytes = StreamUtils.streamToByteArray(bis);
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream("/Users/eval/Desktop/111.png"));
bos.write(bytes);
bos.close();
bis.close();
outputStream.close();
socket.close();
}
}