对于TCP文件上传
客户端上传文件,通过文件输出流输出,然后在服务端读取文件,并返回一个响应接收完毕的信息,客户端收到后关闭服务。
上传该文件:
客户端:
public class Client_upload {
public static void main(String[] args) {
Socket socket=null;
OutputStream outputStream=null;
FileInputStream fileInputStream=null;
InputStream inputStream=null;
try {
//1.创建socket连接,连接到哪台服务器
socket = new Socket(InetAddress.getByName("127.0.0.1"), 9999);
//2.创建输出流
outputStream = socket.getOutputStream();
//3.创建文件输入流读取文件
fileInputStream = new FileInputStream(new File("E:\\JAVA进阶复习\\网络编程\\kaiying.jpg"));
//4.先读取文件,然后通过输出流发送出去
int len;
byte[] bytes=new byte[1024];
while ((len=fileInputStream.read(bytes))!=-1){
outputStream.write(bytes,0,len);
}
//发送完毕后,断开输出流
socket.shutdownOutput();
//接收服务端传来的接收完毕请求,确保服务端正确接收成功
inputStream = socket.getInputStream();
byte[] bytes1 = new byte[1024];
int len2;
while ((len2=inputStream.read(bytes1))!=-1){
String s = new String(bytes1, 0, len2);
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
inputStream.close();
fileInputStream.close();
outputStream.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
服务端
:
public class Server_upload {
public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket accept=null;
InputStream inputStream=null;
FileOutputStream fileOutputStream=null;
OutputStream outputStream=null;
try {
//1.创建ServerSocket对象
serverSocket = new ServerSocket(9999);
//2.监听客户端的连接,连接成功就返回一个socket对象
accept = serverSocket.accept();
//3.读取客户端传来的数据
inputStream = accept.getInputStream();
int len;
byte[] bytes = new byte[1024];
//4.创建一个文件输出流,获取到的文件用我们自定义的文件名称来表达(接收的数据,更名为kaiying_copy.jpg)
fileOutputStream = new FileOutputStream(new File("kaiying_copy.jpg"));
while ((len=inputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,len);
}
//接收完毕后,给客户端响应一个数据,告诉他已经接收完毕了
outputStream = accept.getOutputStream();
outputStream.write("我发送完毕了".getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
outputStream.close();
fileOutputStream.close();
inputStream.close();
accept.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}