TCP上传图片
继续做一个TCP的相关案例,在客户端上传一张图片到服务端,服务端收到图片后,给客户端回馈上传成功信息。
实现细节:
- 对于一些文件的读取,若文件偏大,可以始用缓冲区去读取和写入,可以提高效率
- 服务端面向的是很多用户,所以必须要开线程来接收
- 如果同一个用户上传多张图片则有可能文件名重复,所以要对文件名做处理,具体在代码处有注释
- 客户端图片上传完成后需要给服务端发送结束信息,s.shutdownOutput();
就像是写入了一个终止符一样
客户端
需要在上传结束的时候写入终止符告诉服务端上传结束,可以双方约定一个终止的符号,也可以用shutdownOutput()方法来传递结束信息
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class UploadPicClient {
public static void main(String[] args) throws IOException {
System.out.println("上传图片客户端启动...");
//1、创建socket
Socket s = new Socket("127.233.24.3", 10018);
//2、读取源图片
File picFile = new File("D:\\forio\\download.jpg");
BufferedInputStream fis = new BufferedInputStream(new FileInputStream(picFile));
//3、目的:socke