使用具有相同文件大小的tcp协议将相同的文件名从客户端复制到服务器

时间:2014-05-31 09:29:28

标签: python sockets

这是客户端和服务器程序,客户端将文件发送到服务器以保存在服务器中。有一个issuse,相同的文件名不会被复制到具有相同文件大小的服务器上

请帮助我

客户端程序

import socket
import sys


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost",9999))
path=raw_input("Please enter the complete PATH of your file :  ")
f=open (path, "rb") 
l = f.read(256)
while (l):
    s.sendall(l)
    l = f.read(10000)
s.close()

服务器程序

import socket
import sys

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost",9999))
s.listen(10) 

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

    print address
    i=1
    f = open( str(i),'wb') #open in binary
    #i=i+1
    while (True):       

        l=s.recv(256)
        #while (l):
        f.write(l)
        l=s.recv(256)
        print 'File recieve succesfully'
f.close()
#sc.close()
s.close()

提前致谢

1 个答案:

答案 0 :(得分:0)

首先浏览代码并思考客户端对其发送的数据的了解以及服务器对其接收的数据的了解。您必须发送两种类型的消息:数据和文件名。你是怎么做到的,取决于你。

如果没有过度思考,可能先尝试编写文件名(后跟换行符或特殊字符),然后发送文件数据。在服务器端接受连接,读入数据,直到找到换行符(即文件名),然后接收其余数据并将其写入文件。

此外,您提供的服务器代码无法正常工作,至少我没有想到,因为您永远不会脱离while True循环。