1、基于 Socket 和 JSON 的服务器与客户端文件传输

本文介绍了如何使用Socket和JSON在Linux环境下实现服务器与客户端之间的文件传输,支持多客户端并发连接。通过JSON格式命令进行操作,如查询文件列表、传输指定文件,特别适用于特定项目需求。服务器端核心代码包括创建非阻塞Socket、监听客户端连接及线程处理。客户端基于Qt编写,可在Windows和Ubuntu上运行。
摘要由CSDN通过智能技术生成


   近期由于项目需要, 在 linux 下写了一个服务器与客户端之间进行文件的传输, 可以同时监听多个客户端, 与多个客户端进行传输。基本需求如下 :

1、服务端监听客户端, 当监听到客户端连接时,创建一个线程去完成后续处理工作从而实现同时连接多个客户端。

2、命令与数据分开传递,其中命令采用JSON格式。客户端可以通过命令查询指定目录的文件链表,可以指定需要传    输的文件, 当收到的是图片文件时,通过界面显示。


由于项目的特殊性, 这里只能列出部分功能


传输中定义的 Json 的格式如下 :


/* ----------------- 下发的消息 ----------------- */
获取文件链表
{
    "MsgType": "Cmd",
    "MsgID"  : 0x0D,
}

同步指定文件
{
    "MsgType"  : "Cmd",
    "MsgID"    :  0x0E,
    "FileName" : "/tmp/SD0/DCIM/140101100/001836AB.MP4"
}

/* ----------------- 接收的消息 ----------------- */
连接成功 
{
    "MsgType"      : "ConnectInfo"
    "CmdInfoArray" : [
                        {
                            "MsgValue" : "Success"
                        }
                     ]
}

即将同步的文件信息
{
    "MsgType"      : "FileInfo",
    "CmdInfoArray" : [

                         {                    
                             "FileName" : "/tmp/SD0/DCIM/140101100/00013100.JPG",
     "FileSize" : 1457969
                         } 

                      ]

}

获取文件列表
{
    "MsgType"      : "FileListInfo"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值