对于上传文件的多线程程序,客户端不存在多线程,主要是服务器需要利用线程池,思路:
1、客户端上传程序编写
-
建立连接,利用tcp套接字
-
读取本地流,即待上传的文件,优先使用高效流
-
读取文件数据并写入到tcp流中
-
上传完成后断开tcp流,避免服务器一直等待
-
接收服务器端返回信息,并完成上传任务
Socket socket = new Socket("192.168.0.103", 9000);
BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream("/Users/ryan/Public/netcode/src/com/doit/netdemo/mutithreadupload/comm.gif"));
OutputStream outputStream = socket.getOutputStream();
//每次写入8k
byte[] data = new byte[1024*8];
int len = 0;
//开始上传
while((len=inputStream.read(data))!=-1){
outputStream.write(data,0,len);
}
//上传完成
socket.shutdownOutput();
//接收反馈
len = socket.getInputStream().re