TCP文件上传实现
- 客户端
package com.caster.IP.lesson02;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClientDemo02 {
public static void main(String[] args) throws Exception{
//1.创建一个Socket链接
Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),856);
//2.创建一个输出流
OutputStream os = socket.getOutputStream();
//3.读取文件
FileInputStream fis = new FileInputStream(new File("F:\\IDEAData\\JavaSE\\Java基础语法\\369.jpg"));
//4.写出文件
byte[] buffes = new byte[1024];
int len;
while ((len = fis.read(buffes))!= -1){
os.write(buffes,0,len);
}
//通知服务器,我已经结束了
socket.shutdownOutput();
//确定服务器接收完毕,才能断开连接
InputStream isOver = socket.getInputStream();
//String byte[]
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] butter2 = new byte[2014];
int lens;
while ((lens=isOver.read(butter2))!=-1){
baos.write(butter2,0,lens);
}
System.out.println(baos.toString());
//5.关闭资源
baos.close();
isOver.close();
fis.close();
os.close();
socket.close();
}
}
-
服务器
package com.caster.IP.lesson02; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class TcpServerDemo02 { public static void main(String[] args) throws Exception{ //1.创建服务 ServerSocket serverSocket = new ServerSocket(856); //2.监听客户端的连接 Socket socket = serverSocket.accept();//堵塞式监听,会一直等待客户端连接 //3.获取输入流 InputStream is = socket.getInputStream(); //4.文件输出 FileOutputStream fos = new FileOutputStream(new File("receive.jpg")); byte[] buffer = new byte[1024]; int len; while ((len = is.read(buffer))!=-1){ fos.write(buffer,0,len); } //通知客户端接收完毕 OutputStream osOver = socket.getOutputStream(); osOver.write("我接受完毕了,你可以断开了".getBytes()); //关闭资源 fos.close(); is.close(); socket.close(); } }