JAVA实现TCP网络文件复制

来源:互联网 发布:淘宝退款车怎么玩 编辑:程序博客网 时间:2024/06/03 19:55

客户端


import java.net.*;import java.io.*;public class SendFile {/** * 需求:将文件发送至服务端 *  * 流程: *      1、建立socket连接 ,指定服务器端口10000 *      2、建立文件读取流 BufferedInputStream链接到文件 *      3、建立输出流链接到 socket 的getOutputStream中 *      4、读取文件 写入socket流中 *      5、建立输入流链接到socket 的getInputStream中,等待成功信息 *      */public void send()throws Exception{Socket socket = new Socket (InetAddress.getByName("192.168.1.5"),10000);BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\hello.txt"));OutputStream socketOut = socket.getOutputStream();byte[] buff = new byte[1024];int len ;while ( (len = bis.read(buff))!=-1){socketOut.write(buff);}System.out.println("finished");socket.shutdownOutput();BufferedReader socketInput =new BufferedReader( new InputStreamReader(socket.getInputStream()));String s = socketInput.readLine();System.out.println(s);bis.close();socket.close();}public static void main(String[] args) throws Exception {SendFile s = new SendFile();s.send();}}

服务器端:

import java.io.*;import java.net.*;public class ReceiveFile {/** * 创建一个ServerSocket服务,监听10000端口 * 创建BufferedOutputstream * 获取一个socket流, * 利用socket流中的InputStream创建一个InputStream * 写入文件 * @throws Exception  */public void Receive() throws Exception{ServerSocket serSocket = new ServerSocket(10000);Socket socket = serSocket.accept();BufferedOutputStream fileOut = new BufferedOutputStream(new FileOutputStream("E:\\hello.txt"));InputStream inSocket = socket.getInputStream();byte[] buf = new byte[1024];int len =0;System.out.println("Going to While");while ( (len = inSocket.read(buf))!=-1){System.out.println("inside while");fileOut.write(buf, 0, len);}String s = "写入成功!";System.out.println(s);DataOutputStream socketOut = new DataOutputStream(socket.getOutputStream());socketOut.writeBytes(s);fileOut.close();socket.close();serSocket.close();}public static void main(String[] args) throws Exception {ReceiveFile rec = new ReceiveFile();rec.Receive();}}


原创粉丝点击