Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2010 15:21:00

bigbiged
От:
Зарегистрирован: 2010-11-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересылка файлов

Добрый день. Помогите новичку. Каким образом переслать файл с одного компьютера на другой (от клиента серверу), используя Python?



Офлайн

#2 Дек. 15, 2010 16:12:50

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

Офлайн

#3 Дек. 15, 2010 16:29:57

bigbiged
От:
Зарегистрирован: 2010-11-19
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересылка файлов

regall
http://forums.devshed.com/python-programming-11/sending-a-file-using-sockets-129281.html
Спасибо. И еще пару вопросов. В каком месте в этом скрипте указывать путь к файлу, который хотим выслать?

# USAGE: python FileSender.py

import sys, socket

HOST = ‘localhost’
CPORT = 9091
MPORT = 9090
FILE = sys.argv

cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cs.connect((HOST, CPORT))
cs.send(“SEND ” + FILE)
cs.close()

ms = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ms.connect((HOST, MPORT))

f = open(FILE, “rb”)
data = f.read()
f.close()

ms.send(data)
ms.close()

И в какоим месте в данном скрипте указать путь куда файл должен быть сохранён?

# USAGE: python FileReciever.py

import socket, time, string, sys, urlparse
from threading import *

#————————————————————————

class StreamHandler ( Thread ):

def __init__( this ):
Thread.__init__( this )

def run(this):
this.process()

def bindmsock( this ):
this.msock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
this.msock.bind(('', 9090))
this.msock.listen(1)
print ' Listening on port 9090'

def acceptmsock( this ):
this.mconn, this.maddr = this.msock.accept()
print ' Got connection from', this.maddr

def bindcsock( this ):
this.csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
this.csock.bind(('', 9091))
this.csock.listen(1)
print ' Listening on port 9091'

def acceptcsock( this ):
this.cconn, this.maddr = this.csock.accept()
print ' Got connection from', this.maddr

while 1:
data = this.cconn.recv(1024)
if not data: break
if data == “SEND”: this.filename = data
print ' Getting ready to receive “%s”' % this.filename
break

def transfer( this ):
print ' Starting media transfer for “%s”' % this.filename

f = open(this.filename,“wb”)
while 1:
data = this.mconn.recv(1024)
if not data: break
f.write(data)
f.close()

print ' Got “%s”' % this.filename
print ' Closing media transfer for “%s”' % this.filename

def close( this ):
this.cconn.close()
this.csock.close()
this.mconn.close()
this.msock.close()

def process( this ):
while 1:
this.bindcsock()
this.acceptcsock()
this.bindmsock()
this.acceptmsock()
this.transfer()
this.close()

#————————————————————————

s = StreamHandler()
s.start()



Офлайн

#4 Дек. 30, 2010 18:01:10

cocucka
От:
Зарегистрирован: 2010-12-30
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Пересылка файлов

bigbiged
В каком месте в этом скрипте указывать путь к файлу, который хотим выслать?
В качестве аргумента передается при запуске скрипта.
FILE = sys.argv

Пример:
python FileSender.py /home/user/11.txt



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version