基于socket实现上传文件
基于socket实现文件上传
客户端代码:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
这个是实现上传文件
首先让客户端传递给服务端文件的大小,
然后读取文件,之后发送给服务端
"""
import os
import socket
obj = socket.socket()
obj.connect(("127.0.0.1",111)) #阻塞
ret_bytes = obj.recv(1024)
ret_str = str(ret_bytes,encoding="utf-8")
print(ret_str) #发送当前文件大小
size = os.stat("f.png").st_size
obj.sendall(bytes(str(size),encoding="utf-8")) #发送文件
with open("f.png","rb") as f:
for line in f:
obj.sendall(line)
obj.close()
服务端
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
先接收客户端传递过来文件的大小
之后开始读取文件,并且做一个判断,如果大小读取完毕之后关闭
"""
import socket
sk = socket.socket()
sk.bind(("127.0.0.1",111))
sk.listen()
#连接客户端信息
while True:
conn,adress = sk.accept()#开始阻塞
conn.sendall(bytes("welcome entry FTP",encoding="utf-8"))
#先接收文件大小,然后开始接收客户端信息
file_size = str(conn.recv(1024),encoding="utf-8")
print(file_size)
totle_size = int(file_size)
#传递过来开始大小为0
has_recv = 0
#以二进制方式接收,因为sendall发送的是二进制文件
f = open("new.png","wb")
#接收文件内容,直到获取完毕
while True:
if totle_size == has_recv:
break
data = conn.recv(1024)
f.write(data)
has_recv = len(data)
f.close()
基于socket实现上传文件的更多相关文章
- 基于SpringMVC的上传文件实现
基于SpringMVC的上传文件实现 1.项目源码 源码地址:upload 2.关键代码 @RequestMapping("/upload2") public void datal ...
- java 网络编程(五)Socket多线程上传文件
客户端: package cn.sasa.socketUploadFileDemo; import java.io.FileInputStream; import java.io.IOExceptio ...
- day059-60 ajax初识 登录认证练习 form装饰器, form和ajax上传文件 contentType
一.ajax 的特点 1.异步交互:客户端发出一个请求后,需要等待服务器响应结束后, 才能发出第二个请求 2.局部刷新:给用户的感受是在不知不觉中完成请求和响应过程. 二.ajax 模板示例 ($.a ...
- 那些年的 网络通信之 TCP/IP 传输控制协议 ip 加 端口 客户端上传文件到服务器端服务器端返回上传成功消息
多线程开启, 客户端通过 Socket 流 上传文件到服务端的一个小程序练习. 1. 抓住阻塞式方法,去调试 2. 获取对应流对象操作对应的对象 这时候自己不能懵,一定要清晰,最好命名就能区别,一搞混 ...
- uploadifive上传文件
uploadifive是一个款基于H5的上传文件的插件.优点是,可以在PC端,也可以在手机上进行操作.缺点是,IE9以下的兼容性不好. View: <!DOCTYPE html> < ...
- 编写Java程序,实现客户端向服务端上传文件的功能
查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...
- PHP socket上传文件图片
最近了解了下下socket方面的东西,想做一个socket上传文件的例子. 在网上搜了搜代码执行后,图片数据传输了一半,图片的下半部分是灰色的.然后就自己仿着搜来的代码和php.net 中socket ...
- php 利用socket上传文件
php 利用socket上传文件 张映 发表于 2010-06-02 分类目录: php 一,利用fsockopen来上传文件 以前我写过一篇关于socket通信原理的博文http://blog.51 ...
- Python基于Python实现批量上传文件或目录到不同的Linux服务器
基于Python实现批量上传文件或目录到不同的Linux服务器 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/rootpath_fo ...
随机推荐
- 设置VisualSVN在提交修改时必须输入一定数量的备注信息
我发现在使用SVN中,提交时,很多人不习惯填写备注信息,虽然在培训中.平时使用时多次提醒备注信息的好处,但是效果不大,每次提交时还是不写,或者随便写两字. 所以很有必要通过系统设置强制填写足够数量的备 ...
- svn hooks使用
最近要将某个目录做samba共享出去,而想通过svn同步文档到svn,然后通过svn hooks 同步到共享目录,实现自动化 现在svn服务器和samba server再同一台机器上: 在svn路径下 ...
- TCP粘包处理通用框架--C代码
说明:该文紧接上篇博文“ linux epoll机制对TCP 客户端和服务端的监听C代码通用框架实现 ”讲来 (1)TCP粘包处理数据结构设计 #define MAX_MSG_LEN 65535 ty ...
- iOS CAGradientLayer白色渐变至上向下
项目需求当显示富文本内容高度太高的的时候不全部显示出来,而是显示查看更多按钮,当点击查看更多时把全部内容展开.同时未展开部分要加一个渐变模糊的效果. 上效果图: 这里要用到CAGradientLaye ...
- Google Code Jam 2014 资格赛:Problem D. Deceitful War
This problem is the hardest problem to understand in this round. If you are new to Code Jam, you sho ...
- inline用于替代宏函数
在C&C++中 一.inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义. 表达式形式的宏定义一例: #define ExpressionName(Va ...
- Coursera machine learning 第二周 quiz 答案 Linear Regression with Multiple Variables
https://www.coursera.org/learn/machine-learning/exam/7pytE/linear-regression-with-multiple-variables ...
- jquery 与javascript关系 ①取元素 ②操作内容 ③操作属性 ④操作 样式 ⑤ 事件 点击变色
jQuery的min版本和原版功能是一样的,min版主要应用于已经开发成的网页中,而非min版 的文件比较大,里面有整洁的代码书写规范和注释,主要应用于脚本开发过程当中. JQuery是继protot ...
- 【BZOJ2322】[BeiJing2011]梦想封印 高斯消元求线性基+DFS+set
[BZOJ2322][BeiJing2011]梦想封印 Description 渐渐地,Magic Land上的人们对那座岛屿上的各种现象有了深入的了解. 为了分析一种奇特的称为梦想封印(Fantas ...
- 九度OJ 1325:Battle Over Cities(城市间的战争) (并查集)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:376 解决:132 题目描述: It is vitally important to have all the cities connect ...