47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
FUNCTION interact$(command$, connection, use_pasv)
|
|
|
|
LOCAL pasv$, data$, response$
|
|
LOCAL port, passive
|
|
|
|
IF use_pasv THEN
|
|
SEND "PASV" & NL$ TO connection
|
|
RECEIVE data$ FROM connection
|
|
pasv$ = INBETWEEN$(data$, "(", ")")
|
|
port = VAL(TOKEN$(pasv$, 5, ","))*256 + VAL(TOKEN$(pasv$, 6, ","))
|
|
OPEN "localhost:" & STR$(port) FOR NETWORK AS passive
|
|
ENDIF
|
|
|
|
IF LEN(command$) THEN SEND command$ & NL$ TO connection
|
|
|
|
WHILE WAIT(connection, 50)
|
|
RECEIVE data$ FROM connection
|
|
IF LEN(data$) = 0 THEN BREAK
|
|
response$ = response$ & data$
|
|
WEND
|
|
|
|
IF use_pasv THEN
|
|
WHILE WAIT(passive, 50)
|
|
RECEIVE data$ FROM passive
|
|
IF LEN(data$) = 0 THEN BREAK
|
|
response$ = response$ & data$
|
|
WEND
|
|
CLOSE NETWORK passive
|
|
ENDIF
|
|
|
|
RETURN response$
|
|
|
|
ENDFUNC
|
|
|
|
OPEN "localhost:21" FOR NETWORK AS ftp
|
|
|
|
PRINT interact$("", ftp, 0)
|
|
PRINT interact$("USER anonymous", ftp, 0)
|
|
PRINT interact$("PASS ", ftp, 0)
|
|
PRINT interact$("CWD pub", ftp, 0)
|
|
PRINT interact$("LIST", ftp, 1)
|
|
PRINT interact$("TYPE I", ftp, 0)
|
|
PRINT interact$("RETR data.txt", ftp, 1)
|
|
PRINT interact$("QUIT", ftp, 0)
|
|
|
|
CLOSE NETWORK ftp
|