可视化文件消息收发一体化Socket实现V0.1

简介: 本设计旨在通过socket的TCP实现不同类型文件的收发,UDP实现消息的收发。

1、概述

本设计旨在通过socket的TCP实现不同类型文件的收发,UDP实现消息的收发。

1.1 需求概述

基本需求:

1)  支持发送不同类型的文件(.txt,.doc,.jpg,.exe,.mp3等所有类型)

2)  支持发送字符消息。

3)  支持可视化、直观显示与操作。

4)  支持单机收发、局域网内两台机器收发。

1.2开发环境

编程语言:C++语言

开发及运行环境:Window操作系统、集成开发环境VS2008。

2、界面设计

image.png

图2.1服务器端界面

image.png

图2.2客户端界面

3、总体设计

总体设计需要参照设计要求去设计。

针对要求一:支持发送不同类型的文件(.txt,.doc,.jpg,.exe,.mp3等所有类型)。

Socket实现通信自不必说,而文件的传输归根结底是文件的读、写。文件的读写涉及到文件的属性:文件的名称(含扩展名,所在路径名)、文件大小、文件内容信息。

核心有三点:

(1)读取文件的前提是知道文件的路径。文件的名称+文件所在的路径即为文件的绝对路径。而存储文件的时候也需要同发送文件名字相同存储,亦需要知道接收文件的路径。

(2)发送、接收的过程都要涉及读取、接收累计字节的多少和文件大小比较,这也是验证文件是否读取完毕或者接收完毕的方法。

(3)文件内容信息,即整个文件长度的字节数,可以循环读文件到buffer、写文件到buffer,最后写入磁盘路径来完成写入。

文件的传输考虑到可靠传输,可以通过TCP套接字来实现。

针对要求二:支持发送字符消息。

发送字符消息,可以采取一端等待接收、一端发送消息的UDP套接字来实现。

针对要求三:支持可视化、直观显示与操作。

考虑到能直观显示指定发送源文件夹sourcefile,接收目标文件夹destfile里的内容。我们考虑采用listCtrl列表框通过图标+文件名称+扩展名的形式显示文件。且可以关联单击添加、左双击打开、右双击删除的操作。

考虑到对接收到文件的直观显示,对于图片的显示,我们借鉴设计了缓存模式和存盘模式。缓存模式将接收到的文件显示在我们设定的区域。而对于硬盘模式,文件存储在对应磁盘的destfile文件夹下,同时在接收端的listctrl列表框会有对应图标显示。仅图片可以缓存模式显示,所有类型的文件都可以通过硬盘模式存储和直观显示。

针对要求四:支持单击收发、两台机器收发。

考虑到支持不同机器收发,我们设计了可配置的IP地址和端口号的模式。方便操作和实现。

4、服务器端的核心设计流程

image.png

5、客户端的核心设计流程

image.png

6、文件收发操作示例

步骤一:

image.png

图6.1服务器端配置完毕后

如图6.1所示,勾选服务器配置复选对话框,无需更改配置,单击配置完毕、单击启动服务,完成等待连接。此时选择的是缓存模式。

步骤二:

image.png

图6.2客户端选中待发送文件,点击接受按钮

如图6.2所示,点击文件发送list列表框,选择待发送的文件123.jpg。单击接受按钮,以等待接受UDP消息。已选框可以有多个不同类型的文件,但发送的时候,一次只能发送一个文件,以最后选择的文件为准。

 
步骤三:

image.png

图6.3客户端单击连接请求、发送按钮后

如图6.3所示,点击连接请求、发送按钮后,客户端显示文件发送滚动条完毕,发送状态栏记录了发送状态及发送的字节数。

服务器端接受发送文件后的界面如图6.4所示。

image.png

图6.4服务器端缓存接收发送文件后

如图6.4所示,服务器端缓存接收文件会在右侧显示,左侧Socket状态栏会显示接收状态。

  
同步骤1à步骤3,若改为硬盘模式接收。硬盘模式步骤3截图如下图6.5、图6.6:

image.png

图6.5客户端单击连接请求、发送按钮后,发送sangfor.txt

image.png

图6.6服务器端硬盘模式接收,并双击Sangfor.txt打开后截图。

如图6.7,服务器端写入消息并单击发送按钮后,客户端能接收消息并显示。

image.png

图6.7客户端接收服务器端消息后显示

 

7、待扩展、完善功能

(1)客户端现在一次仅能发送一个文件,可扩展至一次发送多个文件。

(2)目前的连接、发送、接收,一次发送、一次接收完毕套接字即关闭,可扩展至建立连接后可持续发送。


可视化文件消息一体化收发Socket实现V0.1 说明文档

下载地址:http://download.csdn.net/detail/wojiushiwo987/5149658

可视化文件消息一体化收发Socket实现V0.1 源码  
   
下载地址:http://download.csdn.net/detail/wojiushiwo987/5149657


作者:铭毅天下
原文:https://blog.csdn.net/laoyang360/article/details/8681918

相关文章
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
大数据-99 Spark 集群 Spark Streaming DStream 文件数据流、Socket、RDD队列流
31 0
|
5月前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
|
6月前
|
Arthas 测试技术
错误提示表明Arthas无法打开目标进程的socket文件
错误提示表明Arthas无法打开目标进程的socket文件
100 2
|
6月前
|
网络协议 安全 Python
socket客户端和服务端,文件的传输
socket 实现,客户端和服务端,文件的传输
93 1
|
安全 PHP
PHP-FPM没有生成socket文件
PHP-FPM没有生成socket文件
181 0
|
Oracle 关系型数据库 数据库
Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行imp、exp一键导入导出oracle数据库dmp文件
Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行imp、exp一键导入导出oracle数据库dmp文件
401 0
Python远程操作Oracle实现一键备份还原数据库演示,利用socket进行imp、exp一键导入导出oracle数据库dmp文件
|
存储 缓存 数据可视化
可视化文件消息收发一体化Socket实现V0.1
本设计旨在通过socket的TCP实现不同类型文件的收发,UDP实现消息的收发。 1.1 需求概述 基本需求: 1) 支持发送不同类型的文件(.txt,.doc,.jpg,.exe,.mp3等所有类型) 2) 支持发送字符消息。 3) 支持可视化、直观显示与操作。 4) 支持单机收发、局域网内两台机器收发。
125 0
可视化文件消息收发一体化Socket实现V0.1
|
1月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
|
4月前
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
56 4
|
4月前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
34 3
下一篇
无影云桌面