当前位置:首页>java>Java之网络编程TCP文件传输

Java之网络编程TCP文件传输

  • 2026-08-25 21:39:43
Java之网络编程TCP文件传输
服务端
package lesson02;import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class TcpServerDemo02 {    public static void main(String[] args) throws IOException {        //1、创建服务        ServerSocket serverSocket = new ServerSocket(9000);        //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 os = socket.getOutputStream();        os.write("我接受完毕了,你可以断开了".getBytes());        //5、关闭资源        fos.close();        is.close();        socket.close();        serverSocket.close();    }}
客户端
package lesson02;import java.io.*;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;public class TcpClientDemo02 {    public static void main(String[] args) throws IOException {        //1、创建一个socket连接        Socket socket = new Socket(InetAddress.getByName("127.0.0.1"),9000);        //2、创建一个输出流        OutputStream os = socket.getOutputStream();        //3、读取文件        FileInputStream fis = new FileInputStream(new File("D:\\JavaSE\\javase\\src\\lesson02\\Tux-with-tablet.jpg"));        //4、写出文件        byte[] buffer = new byte[1024];        int len;        while ((len = fis.read(buffer)) != -1) {            os.write(buffer, 0, len);        }        //通知服务器,我已经结束了        socket.shutdownOutput();    //我已经传输完了!        //确定服务器接收完毕,才能断开连接        InputStream inputStream = socket.getInputStream();        //String byte[]        ByteArrayOutputStream baos = new ByteArrayOutputStream();        byte[] buffer2 = new byte[2024];        int len2;        while ((len2 = inputStream.read(buffer2)) != -1) {            baos.write(buffer2, 0, len2);        }        System.out.println(baos.toString());        //5、关闭资源        baos.close();        inputStream.close();        fis.close();        os.close();        socket.close();    }}
先运行服务端,然后再运行客户端
1、运行客户端之后客户端的图片文件会传到服务端并重命名为receive.jpg。
2、服务端会返回一句话给客户端 “我接受完毕了,你可以断开了”。

最新文章

随机文章