Red de conocimiento informático - Problemas con los teléfonos móviles - En Python, cómo enviar un archivo específico al puerto especificado del host de la otra parte (usando el método socket) ¡Principiante, por favor dame un consejo!

En Python, cómo enviar un archivo específico al puerto especificado del host de la otra parte (usando el método socket) ¡Principiante, por favor dame un consejo!

#Remitente

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

importar?Tkinter

importar ?tkFileDialog

desde?socket?import?*

import?struct

import?os

def?client(nombre de archivo) :

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(nombre de archivo, 'rb')

mientras?1:

FileData=fp.read(BUFSIZE)

if?not?FileData:?

break

Sendsocket.send(FileData)

fp.close()

Sendsocket.close()

def?FileOpen():

r?=?tkFileDialog.askopenfilename(título? = ?'Python?Tkinter',?

filetypes=[('Todos?archivos',?'*')]?)

filename=r.split('/' )

cliente(nombre de archivo[-1])

raíz?=?Tkinter.Tk()

botón1?=?Tkinter.Button(raíz,? texto ?=?'Archivo?Abrir',?height=8,width=14,bg='azul',

comando?=?ArchivoAbrir)

botón1.pack()

root.mainloop()

#Receptor

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

from?socket?import?*

importar?os

import?struct

Addr=('127.0.0.1', 8000)

BUFSIZE=1024

FileInfoSize=struct.calcsize('128s32sI8s')

SocketRecv=socket(AF_INET, SOCK_STREAM)

SocketRecv.bind( Addr)

SocketRecv.listen(5)

imprimir?"esperando?....."

conn, addr=SocketRecv.accept (

)

imprimir?"enviar?desde"?, dirección

FileHead=conn.recv(FileInfoSize)

nombre de archivo, temp1, tamaño de archivo, temp2=struct. unpack('128s32sI8s', FileHead)

imprimir?nombre de archivo, len(nombre de archivo), tipo(nombre de archivo)

imprimir?tamaño de archivo

nombre de archivo='new_' nombre de archivo.strip('\00')

fp?=?open(nombre de archivo,'wb')

restsize=tamaño de archivo

mientras?1:

if?restsizelt;BUFSIZE:

filedata=conn.recv(restsize)

otro:

filedata=conn.recv(BUFSIZE )

if?not?filedata:

romper

fp.write(filedata)

restsize=restsize-len(filedata)

if?restsize==0:romper

fp.close()

conn.close()

SocketRecv.close( )

¿Imprimir?'¡¡¿Terminado?!!!'