Avatar billede cht Nybegynder
15. februar 2002 - 19:26 Der er 2 kommentarer og
2 løsninger

Ftp med Socket.TCP

Jeg har nedenstående script, hvor jeg gerne vil have en liste over filer og mapper på ftp-serveren.

Hvordan kan man få den til at vise listen, min kode virker nemlig ikke, den kommer kun med denne tekst:

w3 Sockets tester

220 Serv-U FTP-Server v2.5e for WinSock ready...
331 User name okay, need password.
230 User logged in, proceed.
215 UNIX Type: L8
257 "/c:/test1" is current directory.
200 Type set to A.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
  Script time: 20,04  Error:-2147418113: Timeout expired while waiting for socket event.




<%
Server.ScriptTimeout = 90
response.expires = 0
response.buffer = false
%>

<html><head>
<title>w3 Sockets tester</title><body>
<p><b>w3 Sockets tester</b></p>

<pre>
<%
starttime = timer

on error resume next

Set objSocket = Server.CreateObject("Socket.TCP")
objSocket.Host = "127.0.0.1:21"

objSocket.Open

objSocket.TimeOut = 10000

objSocket.SendLine("USER test")
objSocket.SendLine("PASS test")

objSocket.WaitForDisconnect

objSocket.SendLine("SYST")
objSocket.SendLine("PWD")

objSocket.SendLine("TYPE A")

objSocket.SendLine("LIST")        ' list items in folder

objSocket.WaitForDisconnect

objSocket.SendLine("QUIT")

tmpBuffer = objSocket.Buffer

Response.Write tmpBuffer

objSocket.Close


response.write "<br>&nbsp;<br>&nbsp;<br><b>Script time:</b> " & Formatnumber(timer-starttime,2)

if err.number <> 0 then
    response.write "<br>&nbsp;<br>&nbsp;<br><b>Error:</b><br>" & err.number & ": " & err.description & "<br>"
    err.clear
end if
%>

</pre>

</body></html>
Avatar billede coltau Juniormester
15. februar 2002 - 20:09 #1
Jeg kender ikke Socket.TCP - men jeg ved hvordan man fejlfinder. (det gør du måske også selv.)

Hvis dine kodelinier er lige efter bogen så vil jeg søge efter fejlen ved at udføre en linie ad gangen og studere meddelelserne. Tilføje en linie mere og prøve igen. det kan give en idé om fejlen. !

Hvis dine kodelinier ikke er efter bogen - så undre jeg mig over at du skal "logge" ind to gange og "disconnecte" to gange. (Og havd bruge de to første lineri til. Timer. ?)

Set objSocket = Server.CreateObject("Socket.TCP")
objSocket.Host = "127.0.0.1:21"

objSocket.Open

objSocket.TimeOut = 10000

objSocket.SendLine("USER test")
objSocket.SendLine("PASS test")

objSocket.WaitForDisconnect ' Skal denne linie være her. ?

objSocket.SendLine("SYST") ' Hvd skal denne linie ?
objSocket.SendLine("PWD") ' og denne ?

objSocket.SendLine("TYPE A")

objSocket.SendLine("LIST")        ' list items in folder

objSocket.WaitForDisconnect ' Kan man disconnecte inden man sender QUIT-kommandoen. ?

Du skal ikke tage mit svar for mere end det er. Jeg kender som sagt ikke objectet - men jeg har en evne til at få ting til at virke. :-)
Avatar billede cht Nybegynder
15. februar 2002 - 20:40 #2
Du har nok ret i at objSocket.WaitForDisconnect ikke skulle være der, den gør bare så der kommer timeout og så går der 10 sekunder eller hvor meget man nu har sat timeouttiden til, man er nødt til at lade den vente til den har modtaget det der er i bufferen, det kan man gøre med objSocket.waitfor("complete") men den vil statidvæk ikke liste mapper og filer, men hjælpen vil den gerne komme med. Du kan se min nuværende kode i bunden og her er det nuværende resultatet:

215 UNIX Type: L8
257 "/c:/test1" is current directory.
214- The following commands are recognized (* => unimplemented).
  USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP
  PASS    PASV    STOR    REST    CWD    STAT    RMD    XCUP
  ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU
  REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD    SIZE
  QUIT    MODE    SYST    ABOR    NLST    MKD    XPWD    MDTM
214 Serv-U version 2.5.5.2, registered to: ED!SON '96
200 Type set to A.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.


<%
Set objSocket = Server.CreateObject("Socket.TCP")
objSocket.Host = "127.0.0.1:21"

objSocket.Open

objSocket.TimeOut = 8000

objSocket.SendLine("USER test")
objSocket.SendLine("PASS test")

objSocket.waitfor("logged")

objSocket.SendLine("SYST")
objSocket.SendLine("PWD")

objSocket.SendLine("help")

objSocket.SendLine("TYPE A")

objSocket.SendLine("LIST")        ' list items in folder

objSocket.waitfor("complete")

objSocket.SendLine("QUIT")

Response.Write objsocket.buffer

objSocket.Close

Set objSocket = Nothing
%>
Avatar billede tmceu Praktikant
15. februar 2002 - 20:41 #3
Undskyld at jeg lige blander mig. Men jeg bli'r glad når jeg ser er svar som dette :-)

coltau >> jeg har jo ikke kunnet undgå at bemærke, hvordan du nærmest har taget Eksperten, eller i det mindste ASP kategorien, med storm i den måneds tid du har været her.

Du er efter min målestok, indbegrebet af den ånd som Eksperten er skabt i og et svar som ovenstående illustrerer det perfekt. Det er tydligt at din intention er at hjælpe, selv om du ved at du er "på tynd is".

Alt for mange mennesker herinde jagter udelukkende point og spammer spørgsmålene med totalt unødvendige kommentarer (håber ikke at denne kommentar bliver opfattet som sådan).

Kunne jeg anbefale dig som månedens bruger, gjorde jeg det. Keep up the good work :-)
Avatar billede cht Nybegynder
17. januar 2003 - 21:09 #4
-
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester