通过网络编程,实现从客户端上传视频到服务器端
具体实现:
UploadClient类模拟上传视频端
package com.gxa.upload;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class UploadClient {
public static void main(String[] args) throws Exception {
//1、创建Socket对象
Socket socket = new Socket("127.0.0.1", 8080);
//2、读取客户端电脑的视频
FileInputStream in = new FileInputStream("F:\\国信安\\资料\\视频\\Video_2020-11-18_102710.wmv");
//3、通过socket写出数据到服务器端
OutputStream out = socket.getOutputStream();
//4、写出数据到服务器端 流的模板代码
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
//关闭socket输出流 确保数据传输完
socket.shutdownOutput();
//获取服务器端的反馈信息
InputStream socketIn = socket.getInputStream();
len = socketIn.read(buffer);
System.out.println(new String(buffer, 0, len));
//关闭资源
in.close();
out.close();
}
}
UploadServer类模拟视频接收端并反馈信息
package com.gxa.upload;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class UploadServer {
public static void main(String[] args) throws Exception {
//1、创建ServerSocket对象
ServerSocket ss = new ServerSocket(8080);
//2、获取客户端的socket对象
Socket accept = ss.accept();
//3、获取客户端的数据
InputStream in = accept.getInputStream();
//4、往服务器的磁盘上写出数据,即返回数据
FileOutputStream out = new FileOutputStream("hello.wmv");
//5、流的模板代码
byte[] bytes = new byte[1024];
int len = 0;
while ((len = in.read(bytes)) != -1) {
out.write(bytes, 0, len);
}
//6、反馈上传成功
OutputStream socketOut = accept.getOutputStream();
socketOut.write("视频上传成功".getBytes());
//关闭资源
accept.close();
ss.close();
}
}
结果: