android 保存socket 发送图片_计算机网络 socket方式传输文件

421c1ae2a1ddd7cd5b8f04130d6aa7d5.png

socket通信实现文件的传输,TCP传输方式,python版与C/C++版。

python版

服务器端代码

TCPserver.py:

# -*- coding:utf-8 -*-

客户端代码

TCPclient.py:

# -*- coding:utf-8 -*-

上述程序修改搬运自:Python3使用TCP编写一个简易的文件下载器--Linux公社 ,服务器端添加了一段打印本机IP的代码,客户端添加了一段新建receive文件夹保存接收文件的代码。

程序在Windows和Linux系统上均可运行,测试时需要在服务器程序所在路径新建一个data文件夹并放入用于测试的文件,如图片、视频文件等。

另外,此程序在传输较小的文件(如几KB)时,程序中计算进度的语句会出现除数为0的错误,需要屏蔽传输进度相关语句或作某些修改。另一方面,进度的显示也比较耗时,去掉进度显示可以减小文件传输时间。

测试结果

服务器端(Ubuntu18.04):

D...@deeplearning:~/.../TCPsocketTest$ python3 TCPserver.py 
TCP文件传输服务器,本机IP:192.168.1.143
客户端连接成功 ('192.168.1.110', 53114)
请求文件名:1.jpg  文件大小:0.04 MB
请求的文件数据发送完成

客户端(Win10):

============= RESTART: G:...TCPsocketTestTCPclient.py =============
输入服务器IP:192.168.1.143
请输入要下载的文件名:1.jpg
文件名:1.jpg  文件大小:0.04MB
是否下载?(y 确认 q 取消)y
正在下载 >>>>>>
下载结束!
>>> 

G:TCPsocketTest>

服务器端运行在Ubuntu18.04系统,客户端运行在Win10系统,当然也可以互换运行。另外,实测win10的服务器端程序与Ubuntu10的客户端通信这种情况,win10的服务器端必须在IDLE环境中运行,在cmd命令行中运行无法连接,原因未知。

C/C++版

将python程序改写为C/C++语言,实现类似的文件传输功能,以下程序用到了winsock以及dll库,只能在Windows系统下运行。

服务器端

server.cpp

// 客户端发送字符串,服务器接收字符串,以相同内容返回 (循环服务)

客户端

client.cpp:

// 客户端发送字符串,服务器接收字符串,以相同内容返回 (循环服务)

运行效果与python版的类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值