导航:首页 > 文件教程 > pythonsocket传输文件

pythonsocket传输文件

发布时间:2023-05-15 13:09:19

⑴ 为什么python socket文件传输后的文件打不开

python有三种方法解析XML,分别是SAX,DOM,以及ElementTree: SAX用事件驱动模型,通过在解析XML的过程中

⑵ python中,如何将一个指定的文件发送到对方主机的指定端口呢(用socket方式) 新手求指教!

#发送端
#-*-coding:utf-8-*-
importTkinter
importtkFileDialog
fromsocketimport*
importstruct
importos

defclient(filename):
Addr=('127.0.0.1',8000)
BUFSIZE=2048
Sendsocket=socket(AF_INET,SOCK_STREAM)
Sendsocket.connect(Addr)

FileHead=struct.pack('128s11i',filename,0,0,0,0,0,0,0,0,os.stat(filename).st_size,0,0)

Sendsocket.send(FileHead)

fp=open(filename,'rb')

while1:
FileData=fp.read(BUFSIZE)
ifnotFileData:
break
Sendsocket.send(FileData)

fp.close()
Sendsocket.close()

defFileOpen():
r=tkFileDialog.askopenfilename(title='PythonTkinter',
filetypes=[('Allfiles','*')])
filename=r.split('/')
client(filename[-1])

root=Tkinter.Tk()
button1=Tkinter.Button(root,text='FileOpen',height=8,width=14,bg='blue',
command=FileOpen)
button1.pack()

root.mainloop()#接收端
#-*-coding:utf-8-*-
fromsocketimport*
importos
importstruct


Addr=('127.0.0.1',8000)
BUFSIZE=1024
FileInfoSize=struct.calcsize('128s32sI8s')

SocketRecv=socket(AF_INET,SOCK_STREAM)
SocketRecv.bind(Addr)
SocketRecv.listen(5)

print"waitting........"
conn,addr=SocketRecv.accept()
print"sendfrom",addrFileHead=conn.recv(FileInfoSize)
filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',FileHead)
printfilename,len(filename),type(filename)
printfilesize

filename='new_'+filename.strip('0')
fp=open(filename,'wb')
restsize=filesize

while1:
ifrestsize<BUFSIZE:
filedata=conn.recv(restsize)
else:
filedata=conn.recv(BUFSIZE)
ifnotfiledata:
break
fp.write(filedata)
restsize=restsize-len(filedata)
ifrestsize==0:break
fp.close()

conn.close()
SocketRecv.close()

print'Finished!!!'

⑶ python如何使用socket来传输对象

importsocket
importstruct

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(('localhost',10000))

values=(1,'ab',2.7)
packer=struct.Struct('I2sf')
packed_data=packer.pack(*values)

try:
sock.sendall(packed_data)
finally:
sock.close()

有个模块叫struct,可以自定义结构体,可以这样发送代码

try:
importcPickleaspickle
except:
importpickle

classAA():
defa(self):
print"123"

ddd=AA()
data=pickle.mps(ddd)

还有个模块叫pickle,可以打包任何python对象,打包的结果也可以拿到套接字里发。

阅读全文

与pythonsocket传输文件相关的资料

热点内容
js关闭页面前提示 浏览:147
彩视制作教程 浏览:766
圣墟在哪个App看免费 浏览:395
网络哪些不能玩 浏览:868
probe315使用教程 浏览:646
数字电位器程序 浏览:198
c代码整理 浏览:104
网络营销具有什么优势 浏览:378
右下角网络连接不显示宽带连接 浏览:940
ps修改tif文件 浏览:580
预防医学如何转行做大数据 浏览:234
pdf文件变蓝 浏览:309
怎么在pdf文件上面用k宝签名 浏览:213
如何知道表格里数据后面有空格 浏览:720
gee引擎更新系统找不到指定文件 浏览:802
贝壳网的数据删除了如何找回 浏览:509
华为荣耀6x怎么切换网络 浏览:418
手机里的pdf文件在哪放 浏览:889
java版贪吃蛇毕业论文 浏览:989
微信公共号邮箱 浏览:415

友情链接