练习 : 选择一张图片,从客户端上传到服务端
温馨提示: 客户端读取图片的内容
将内容发送给服务端
服务端接受图片内容
保存在服务端某个位置
客户端代码:
from socket import *
s = socket()
s.connect(('127.0.0.1',8888)) # 连接服务器
img = input(">>") # 客户输入文件路径和名字
f = open(img,'rb') # 打开文件,准备一会儿读取
# 边读取,边发送
while True: # 边读边发
data = f.read(1024)
if not data: # 读不到文件了,就说明到了文件结尾
break
s.send(data)
f.close()
s.close()
服务端代码:
"""
练习 : 选择一张图片,从客户端上传到服务端
温馨提示: 客户端读取图片的内容
将内容发送给服务端
服务端接受图片内容
保存在服务端某个位置
"""
from socket import *
from time import localtime
# 存在这里, 先写好路径,省的想起路径就头痛,路径复用,哈哈
SAVE_PATH = "/home/tarena/图片/" # 小心机,结尾的斜杠也带着,待会儿就能直接加文件名
s = socket()
s.bind(('127.0.0.1',8888))
s.listen(3)
c,addr = s.accept() # 接收客户端连接
print("Connect from",addr) # 如若连接,告知操作人
# 打开文件
tmp = localtime()
img = "%s-%s-%s.jpg"%tmp[:3] # 这名字起的,一朵花儿啊
f = open(SAVE_PATH+img,'wb') # 路径加名字, 写二进制方式打开,同时就能创建文件
#接收图片
while True: # 边收边写
data = c.recv(1024)
if not data:
break # 接收不到数据,也就是到了结尾,就退出
f.write(data) # 把读取到的写到打开的文件里去
f.close()
c.close() # 服务端的套接字一般都有两个,创建的套接字,和接收到客户端的套接字
s.close() # 核心代码,没几句啊
品过上一段代码,来做这个小练习,瞬间就清晰了.自学,自己掌握方向和节奏的感觉灰常好,加油,明天继续,早点来.