python-TCP模拟ftp文件传输

 1  #!/usr/bin/python
 2 #coding=utf-8
 3 #server
 4 from socket import*
 5 import sys,os
 6 def command():
 7     l=[ "Welcome!\n","command\n", "list\n","upload\n","download\n"]
 8     return l
 9 def list():
10     l=[]
11     for filename in os.listdir('.'):
12         l.append(filename)
13     return l
14 HOST="192.168.1.33"
15 PORT=5126
16 ADDR=(HOST,PORT)
17 sockob=socket(AF_INET,SOCK_STREAM)
18 sockob.bind(ADDR)
19 sockob.listen(5)
20 
21 a=[]
22 while 1:
23     sock,addr=sockob.accept()
24 
25     while 1:
26         data=sock.recv(1024) 
27         str=data.split(" ")
28 
29         if data =="command":
30             a=command()
31             for i in a:
32                 sock.send(i)
33         elif data =="list":
34             a=list()
35             for i in a:
36                 sock.send(i)
37         elif str[0]=="upload":
38             f=open(str[1],'w')
39             s=sock.recv(1024)
40             print s
41             for i in s: #range(len(str)):
42                 f.write(i)
43             print "upload is ok!"
44         elif str[0]=="download":
45             f=open(str[1],'r')
46             s=f.readlines()
47             for i in s:
48                 sock.send(i)
49             print "download is ok!"
50 sockob.close()
51 sock.close()
 1 #!/usr/bin/python
 2 #coding=utf-8
 3 #client
 4 from socket import *
 5 import sys
 6 
 7 HOST='192.168.1.33'
 8 PORT=5126
 9 ADDR=(HOST,PORT)
10 sockob=socket(AF_INET,SOCK_STREAM)
11 sockob.connect(ADDR)
12 
13 while 1:
14     data=raw_input(">",)
15     str=data.split(' ')
16     if not str:
17         break
18     elif str[0]=="upload":
19         f=open(str[1],'r')
20         sockob.send(data)
21         s0=f.readlines()
22         print s0
23         for i in s0:
24             sockob.send(i)
25     elif str[0]=="download":
26         f=open(str[1],'w')
27         sockob.send(data)
28         s1=sockob.recv(1024)
29         f.write(s1)
30     elif data=="command" or data=="list":
31         sockob.send(data)
32         data=sockob.recv(1024)
33         print data
34 
35 
36 sockob.close()

 

转载于:https://www.cnblogs.com/chengyunshen/p/7196050.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值