java socket文件传输

本文关注Java中使用Socket进行文件传输的关键点,强调在传输过程中添加文件长度信息以确保完整性。还讨论了在网络不稳定时如何处理中断,并提出通过多线程支持多个客户端连接。此外,建议使用Swing界面实现双向文件传输。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意点 :

  1. 传输文件时,为了知道文件传输是否结束,可以在报头中添加文件长度或者文件末尾添加结束标志 - 特殊进制符号等.(个人感觉还是文件长度或者说是文件长度 + 结束标志,比较可靠)
  2. 实际上的网络环境比较复杂,在公共网络的测试中,由于Server端网络较差,在传输过程中出现传输中断,有必要的情况下需要进行检查,避免出现无意义的等待和及时重新建立传输连接.

下面是一个简单的socket实现文件传输.

  1. 如果需要多个客户端接入,可以借助多线程,为每个连接创建一个线程去处理.

  2. 如果需要双向传递,建议设计一个swing界面,目的是为将文件的发送和文件的接收界面分开,不管是dos或者控制台都不会满足你对双向的使用.

Client.java

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Date;

/**
 * 数据组成 文件名 + 文件长度 + 文件内容
 * @author pingguoliu
 *
 */
public class Client {
   
   

    public static void main(String[] args) throws IOException {

        String filePath;    // 发送文件路径
        File file;  // 文件对象
        FileInputStream fis = null; // 文件输入流
        long fileLength = 0;    // 文件长度
        String fileName;    // 文件名

        String ip;  // 服务器地址
        InetAddress inetAddress;    // ip封装对象
        Socket socket = null;   // 套接字
        OutputStream os = null; // socket输出流对象
        DataOutputStream dos = null;    // 封装socket输出流

        System.out.println("开始传输时间 : " + new Date());

        filePath = "/Users/pingguoliu/Downloads/小兵传奇.txt";  // 需要发送的文件
//      filePath = "/Users/pingguoliu/Downloads/斗破苍穹.dmg";
//      filePath 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值