You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cserver/FILE_TRANSFER_GUIDE.md

5.0 KiB

文件传输和多媒体功能使用指南

功能概述

本聊天系统现已支持以下多媒体功能:

1. 普通文件传输

  • 支持任意类型的文件传输
  • 文件大小限制10MB
  • 自动保存到 downloads 目录

2. 图片传输与显示

  • 支持格式JPG, PNG, GIF, BMP, WebP
  • 自动在聊天界面中显示图片预览
  • 点击图片可在新窗口查看原图

3. 视频传输与播放

  • 支持格式MP4, AVI, MOV, WMV, FLV, WebM
  • 内置视频播放器,支持在线播放
  • 播放控制:播放/暂停、进度条、音量调节

4. 音频传输与播放

  • 支持格式MP3, WAV, OGG, M4A, FLAC
  • 内置音频播放器
  • 播放控制:播放/暂停、进度条、音量调节

5. 语音聊天

  • 实时录制语音消息
  • 支持语音播放
  • 显示语音时长

使用方法

TCP客户端命令行

发送文件

/file @用户名 文件路径

示例:

# 发送图片
/file @Alice photo.jpg

# 发送视频
/file @Bob video.mp4

# 发送音频
/file @Charlie music.mp3

# 发送普通文件
/file @David document.pdf

接收文件

  • 文件会自动保存到 downloads 目录
  • 文件名格式:用户名_原文件名
  • 控制台会显示文件信息和保存路径

Web客户端浏览器

发送文件

  1. 点击输入框左侧的 📎 按钮
  2. 选择要发送的文件
  3. 文件会自动发送给当前聊天对象

发送语音消息

  1. 点击输入框右侧的 🎤 按钮开始录音
  2. 按钮变为 ⏹️ 表示正在录音
  3. 再次点击停止录音并发送

查看多媒体内容

  • 图片:自动显示在聊天界面,点击可放大查看
  • 视频:显示视频播放器,点击播放按钮观看
  • 音频:显示音频播放器,点击播放按钮收听
  • 语音:显示语音播放控件,点击播放
  • 普通文件:显示文件信息,点击"下载"按钮保存

技术实现

消息类型

public enum MessageType {
    FILE,    // 普通文件
    IMAGE,   // 图片文件
    VIDEO,   // 视频文件
    AUDIO,   // 音频文件
    VOICE    // 语音消息
}

消息结构

Message {
    MessageType type;      // 消息类型
    String sender;         // 发送者
    String receiver;       // 接收者
    String fileName;       // 文件名
    String fileType;       // MIME类型
    long fileSize;         // 文件大小(字节)
    byte[] fileData;       // 文件数据
    int duration;          // 音视频时长(秒)
    Date timestamp;        // 时间戳
}

文件类型识别

系统根据文件扩展名自动识别文件类型:

  • 图片.jpg, .jpeg, .png, .gif, .bmp, .webp
  • 视频.mp4, .avi, .mov, .wmv, .flv, .webm
  • 音频.mp3, .wav, .ogg, .m4a, .flac
  • 其他:作为普通文件处理

注意事项

  1. 文件大小限制

    • Web客户端最大10MB
    • TCP客户端理论上无限制但建议不超过100MB
  2. 浏览器兼容性

    • 语音录制需要浏览器支持 MediaRecorder API
    • 建议使用 Chrome、Firefox、Edge 等现代浏览器
  3. 网络传输

    • 大文件传输可能需要较长时间
    • 建议在稳定的网络环境下使用
  4. 存储空间

    • 接收的文件会保存在本地
    • 定期清理 downloads 目录以释放空间
  5. 安全性

    • 文件传输未加密,请勿传输敏感信息
    • 接收文件前请确认发送者身份

编译和运行

编译

# Windows
compile.bat

# Linux/Mac
./compile.sh

运行服务器

# TCP服务器
run_server.bat    # Windows
./run_server.sh   # Linux/Mac

# WebSocket服务器支持Web客户端
run_web_server.bat    # Windows
./run_web_server.sh   # Linux/Mac

运行客户端

# TCP客户端
run_client.bat    # Windows
./run_client.sh   # Linux/Mac

# Web客户端
# 在浏览器中访问 http://localhost:8080

示例场景

场景1发送图片

用户A: /file @用户B photo.jpg
系统: 正在发送文件: photo.jpg (2.5 MB)
系统: 文件发送完成

用户B收到:
[用户A] 发送了图片: photo.jpg
文件大小: 2.5 MB
已保存到: downloads/用户B_photo.jpg

场景2发送语音消息

用户A: 点击🎤按钮录制5秒语音
系统: 语音消息已发送

用户B收到:
[用户A] 发送了语音消息 (5秒)
已保存到: downloads/用户B_voice_1234567890.webm

故障排除

问题1无法发送文件

  • 检查文件是否存在
  • 检查文件大小是否超过限制
  • 确认已选择聊天对象

问题2无法录制语音

  • 检查浏览器是否支持 MediaRecorder API
  • 确认已授予麦克风权限
  • 尝试刷新页面重新授权

问题3文件无法播放

  • 检查浏览器是否支持该文件格式
  • 尝试下载文件后使用本地播放器
  • 确认文件未损坏

未来改进

  • 支持文件分片传输(大文件)
  • 添加传输进度显示
  • 支持文件预览PDF、Office文档
  • 添加文件加密传输
  • 支持视频通话
  • 添加屏幕共享功能