使用python中的socket实现服务器和客户端,并完成图片的传输
使用python中的socket实现服务器和客户端,并完成图片的传输。
socket服务器代码:
- import socket
- import os
- sk=socket.socket()
- print(sk)
- address=('127.0.0.1',8000)
- sk.bind(address) #将本地地址与一个socket绑定在一起
- sk.listen(3) #最多允许有3个客户称呼
- print('waiting........ ')
- BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #26:11,当前目录
- while 1:
- conn,addr = sk.accept()
- while 1:
- # client = conn
- data = conn.recv(1024) #缓冲区大小,接收文件的个数 第一次获取请求
- # client.send("HTTP/1.1 200 OK\r\n\r\n".encode("utf8"))
- # client.send("<h1 style='color:red'>Hello,yuan</h1>".encode("utf8"))
- cmd,filename,filesize=str(data,'utf8').split('|') #第一次提取请求信息,获取 post name size
- #filesize = os.stat(data)
- path = os.path.join(BASE_DIR,'MNIST_80',filename)
- filesize=int(filesize)
- f = open(path,'ab')
- has_receive=0
- while has_receive!=filesize:
- data=conn.recv(1024) #第二次获取请求,这次获取的就是传递的具体内容了,1024为文件发送的单位
- f.write(data)
- has_receive+=len(data)
- f.close()
socket客户端代码:
- import socket
- import os
- sk = socket.socket()
- print(sk)
- address=('127.0.0.1',8000)
- sk.connect(address)
- BASE_DIR = os.path.dirname(os.path.abspath(__file__))
- while True:
- inp=input('>>>>>>>>') #post|11.png
- cmd,path=inp.split('|') #拿到post,以及文件11.jpg
- path=os.path.join(BASE_DIR,path)
- filename = os.path.basename(path)
- file_size = os.stat(path).st_size
- file_info='post|%s|%s'%(filename,file_size) #split获取字符串的信息 以此方式打包,依次为 cmd/name/size
- sk.sendall(bytes(file_info,'utf8')) #第一次发送请求,不是具体内容,而是先发送数据信息
- f = open(path,'rb')
- has_sent=0
- while has_sent!=file_size:
- data = f.read(1024)
- sk.sendall(data) #发送真实数据
- has_sent+=len(data)
- f.close()
- print('上传成功')
下面是我,修改的更为简单的socket服务器。。
- import socket
- import os
- sk=socket.socket()
- print(sk)
- address=('127.0.0.1',8000)
- sk.bind(address) #将本地地址与一个socket绑定在一起
- sk.listen(3) #最多允许有3个客户称呼
- print('waiting........ ')
- BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #26:11,当前目录
- while 1:
- conn,addr = sk.accept()
- while 1:
- filename = '123456789.jpg'
- path = os.path.join(BASE_DIR,'MNIST_80',filename)
- f = open(path,'ab')
- data=conn.recv(50000)
- f.write(data)
- f.close()
- print(data) #图片数据
- #print(type(data))
使用python中的socket实现服务器和客户端,并完成图片的传输相关推荐
- python 指定dns服务器,如何在python中设置本地DNS服务器
你可以这样做:import socket name = raw_input("hostname:") if name == "mpapp.nobies.in": ...
- 用python模拟多人聊天服务器以及客户端(带图形化界面)
所用python的知识点: 网络编程:socket 多线程:threading 图形化编程:tkinter 首先要模拟出一个服务器,以供客户端连接,注意这里的要用死循环,要让服务区一直处于开放的状态 ...
- java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- 使用python中PIL库进行切图时候出现了图片全黑
使用PIL的Image切图时候图片全黑 不知道大家有没有遇见这样得问题,使用python中PIL库进行切图时候出现了图片全黑得现象 今天写了个切图得代码,但是得到得图片是全黑的,像这样的情况: 不知道 ...
- java服务端代码_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- Socket编程服务器和客户端【重要】
socket编程服务器和客户端[重要] 看过很多网上大神们写的socket,无论复杂或是简洁,感觉对于新手都不是很友好,写的步骤和过程描述得不是很清晰,最近又想起来要写一写,就当做个笔记吧~ 不多说! ...
- Python核心编程(第3版)第2章网络编程中关于tcp/udp服务器和客户端实现代码的运行出错的修正
在Python核心编程(第3版)第2章网络编程中, 关于tcp/udp服务器和客户端实现代码的运行会出现 ['str' does not support the buffer interface]之类 ...
- python 中的socket模块——网络编程(一)
传输协议: 一个完整的计算机由硬件.操作系统.应用软件组成,具备者三个条件,一台计算机可以进行简单的单机游戏:扫雷等等,如果想要和别人一起玩,就需要上网了,甚麽是互联网?互联网的核心就是由一堆协议组成 ...
- Java使用Socket实现服务器与客户端通信
最近在写一个Android 网络局域网通信功能,客户端将数据发送到服务器后,服务器再将这个数据转发给其他客户端为了方便起见,写了一个工具类,废话不多说,上代码,这段代码是基于Gson 的,需要在And ...
最新文章
- 各种光学仪器成像技术(上)
- DP专题训练之HDU 1087 	Super Jumping!
- 从一个登录页面浅淡MVVM(二)
- mysql 字段唯一效率_对于同一个字段使用唯一性索引和非唯一性索引,效率有区别吗???...
- 4.5 NiN CNN、tensorflow实现——python实战
- Java异常Error和Exception
- oracle 方案概念
- pixmap和label设置图片自适应大小
- Summarize 2014 Look Ahead 2015
- 表白网页在线制作-我要表白网-最浪漫的表白网页在线生成网站
- 用Python合并文件夹下所有pdf文件(包括多级子目录下的pdf文件)
- nginx 配置为play!的前端http服务器
- 【项目】好用快搜文档搜索工具
- YOLO目标检测之IOU计算及其衍变体
- 查看Linux服务器内存和cpu核数
- 大数据具有哪些特征?大数据具有哪些特征?
- Python流程控制下:循环语句
- iOS AVplayer 基本使用方法
- Cocos2dx升级支持 android 64位架构
- 【九】Java接口思维导图
热门文章
- 常见的面试思考题(MARK)
- php {template header},php通过header发送自定义数据
- 邵阳计算机专业哪家最好,邵阳学院专业排名 最好的专业有哪些
- linux内核 fat,微软宣布exFAT文件系统规范,希望被Linux内核接纳
- java soap附件_java - 附件在SoapUI中工作,但在Java中不能使用SAAJ API吗? - 堆栈内存溢出...
- java中字符流 字节流_理解Java中字符流与字节流的区别
- android怎么判断程序进入了后台,Android检测应用程序是否进入后台
- java中什么是反转_Java中如何将字符串反转
- 计算机培训专业中心架,国家高技能人才培养车工培训方案.doc
- 为什么大厂们一边在疯狂裁员,一边又在大量招人?