2012-10-11 20 views
0

我正在使用基于Python的基于Socket的文件传输脚本。服务器可以有10个客户端连接到它,所有发送文件。问题是,它只发送一个名为'libroR.pdf'的文件,如果可能的话,我希望用户能够指定要发送到服务器的自定义文件的名称和位置。如果可能的话,我也希望能够为客户端指定一个自定义的主机名来连接。如何在这个Python Socket中调用文件名?

服务器:

import socket 
import sys 

s = socket.socket() 
s.bind(("localhost",9999)) 
s.listen(10) # Acepta hasta 10 conexiones entrantes. 

while True: 
    sc, address = s.accept() 

    print address 
    i=1 
    f = open('file_'+ str(i)+".pdf",'wb') #open in binary 
    i=i+1 
    while (True):  
    # recibimos y escribimos en el fichero 
     l = sc.recv(1024) 
     while (l): 
       f.write(l) 
       l = sc.recv(1024) 
    f.close() 


    sc.close() 

s.close() 

客户:

import socket 
import sys 

s = socket.socket() 
s.connect(("localhost",9999)) 
f=open ("libroR.pdf", "rb") 
l = f.read(1024) 
while (l): 
    s.send(l) 
    l = f.read(1024) 
s.close() 

谢谢,肖恩。 :)

+0

你能解决这个缺口?它看起来像你的while循环变平了。 –

+0

是的,我明白了。只是修复它。 – seanthewebber

回答

0

试试这个:

import socket 
import sys 
s = socket.socket() 
s.connect((raw_input("Enter a host name"),9999)) 
f = open(raw_input("Enter the file to send to the server: "), "rb") # On this line, you were getting a file allways named libroR.pdf, but the user can input the file now 
l = f.read(1024) 
while (l): 
    s.send(l) 
    l = f.read(1024) 
s.close() 
+0

我认为你误解了代码。客户端不试图从套接字接收。它正在读取文件并将其发送到套接字。 – jdi

+0

我知道。在您发表评论时,我正在更改它。抱歉。 –

+0

@ Tommy3244,我喜欢:)看着这个,是不是意味着服务器也不得不稍微修改一下? :3 – seanthewebber

相关问题