Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
ebee6c95
Commit
ebee6c95
authored
Nov 16, 1992
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added comments, use 'global' and change prompt to "ftp.py> "
parent
4f87bea6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
5 deletions
+17
-5
Demo/sockets/ftp.py
Demo/sockets/ftp.py
+17
-5
No files found.
Demo/sockets/ftp.py
View file @
ebee6c95
...
...
@@ -4,6 +4,18 @@
# but this is not a complete implementation! Yet it shows how a simple
# FTP client can be built, and you are welcome to extend it to suit
# it to your needs...
#
# How it works (assuming you've read the RFC):
#
# User commands are passed uninterpreted to the server. However, the
# user never needs to send a PORT command. Rather, the client opens a
# port right away and sends the appropriate PORT command to the server.
# When a response code 150 is received, this port is used to receive
# the data (which is written to stdout in this version), and when the
# data is exhausted, a new port is opened and a corresponding PORT
# command sent. In order to avoid errors when reusing ports quickly
# (and because there is no s.getsockname() method in Python yet) we
# cycle through a number of ports in the 50000 range.
import
sys
,
posix
,
string
...
...
@@ -60,12 +72,12 @@ def control(hostname):
# (Cycle through a number of ports to avoid problems with reusing
# a port within a short time.)
#
cycle
=
[
0
]
nextport
=
0
#
def
newdataport
(
s
,
f
):
port
=
cycle
[
0
]
cycle
[
0
]
=
(
port
+
1
)
%
16
port
=
port
+
FTP_DATA_PORT
global
nextport
port
=
nextport
+
FTP_DATA_PORT
nextport
=
(
nextport
+
1
)
%
16
r
=
socket
(
AF_INET
,
SOCK_STREAM
)
r
.
bind
(
gethostbyname
(
gethostname
()),
port
)
r
.
listen
(
0
)
...
...
@@ -122,7 +134,7 @@ def getdata(r):
#
def
getcommand
():
try
:
return
raw_input
(
'ftp> '
)
return
raw_input
(
'ftp
.py
> '
)
except
EOFError
:
return
''
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment