欢迎光临散文网 会员登陆 & 注册

TCP实现文件传输

2021-02-13 16:19 作者:忘魂儿  | 我要投稿

//客户端
import javax.imageio.IIOException;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class Uploading1 {
   public static void main(String[] args) throws IIOException {
       try {
           //创建一个socket连接
           Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 1314);
           //创建一个输出流
           OutputStream os=socket.getOutputStream();
           //读取文件
           FileInputStream fis = new FileInputStream(new File("C:\\Users\\hfdn\\Desktop\\beauty.jpg"));
           //写出文件
           byte[] buffer= new byte[1024];
           int len;
           while((len=fis.read(buffer))!=-1)
           {
               os.write(buffer,0,len);
           }
           //通知服务器,我已经传输完了
           socket.shutdownOutput();

           //确定服务器接收完毕,才能断开连接
           InputStream inputStream=socket.getInputStream();
           ByteArrayOutputStream tunnel = new ByteArrayOutputStream();
           byte[] buffer2= new byte[2014];
           int len2;
           while((len2=inputStream.read(buffer2))!=-1)
           {
               tunnel.write(buffer2,0,len2);
           }
           System.out.println(tunnel.toString());
           //关闭资源
           inputStream.close();
           tunnel.close();
           fis.close();
           os.close();
           socket.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}

//服务端

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class Uplodaing2 {
   public static void main(String[] args) {
       try {
           //创建服务
           ServerSocket serverSocket = new ServerSocket(1314);
           //监听客户端的连接
           Socket socket = serverSocket.accept();//阻塞式监听,会一直等待
           //获取输入流
           InputStream is=socket.getInputStream();
           //文件输出
           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 over=socket.getOutputStream();
           over.write("我接收好了,你可以走了".getBytes());
           //关闭资源
           fos.close();
           is.close();
           socket.close();
           serverSocket.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

}

TCP实现文件传输的评论 (共 条)

分享到微博请遵守国家法律