Toon posts:

[VB.NET] Dirlist van FTP ophalen lukt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mijn probleem:
Ik probeer in VB.NET een FTP client te schrijven. Dit is voor een groot gedeelte gelukt ik kan connecten met de ftp server en kan inloggen daarop met user en pass.
Maar nu het probleem ik kan de dirlist niet opvragen, ik krijg altijd hetzelfde terug en dat is :

code:
1
drw-rw-rw-   1 user     group           0 Oct  8 19:59


En alleen dat stukje maar terwijl als ik hem in mijn interne netwerk test door een ftp server te draaien op een pc en er dan op connect krijg ik de perfecte dirlisting terug.
Alleen als ik het internet op ga werkt hij niet.
Misschien is het belangrijk dat op de pc van het interne netwerk win2003server draaide, ik weet niet of dat iets uitmaakt.

Hieronder klein stukje code dat de dirlist opvraagt.

code:
1
2
3
4
5
                intPort = cmdPasv2Port()
                priBytes = Encoding.ASCII.GetBytes("LIST -al" & vbCrLf)
                priNetStream.Write(priBytes, 0, priBytes.Length)
                priSM = OtherPortGet(intport)
                DirList = Encoding.ASCII.GetString(priSM.ToArray, 0, priSM.Length)


In bovenstaande stukje verwijst hij naar cmdpasv2port deze haalt een passive poort op dit werkt goed in het stukje otherportget gaat het denk ik mis buiten mijn netwerk dan.
onderstaand stukje gaat over otherportget

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Function OtherPortGet(ByVal intDataPort As Int32, Optional ByVal BytesWillRec As Int64 = 0) As MemoryStream
        Dim strTemp As String
        Dim i As Int64
        Dim priSM As New MemoryStream

        If BytesWillRec >= 0 Then
            Try
                ReDim priBytes(priTcpData.ReceiveBufferSize)
                intBytesRec = priDataStream.Read(priBytes, 0, CInt (priTcpData.ReceiveBufferSize))
                priSM.Write(priBytes, 0, intBytesRec)
                i = intBytesRec
                If BytesWillRec = 0 Then
                    Do While priDataStream.DataAvailable
                        ReDim priBytes(priTcpData.ReceiveBufferSize)
                        intBytesRec = priDataStream.Read(priBytes, 0, CInt(priTcpData.ReceiveBufferSize))
                        priSM.Write(priBytes, 0, intBytesRec)
                        i = i + intBytesRec
                        Beep()
                        Application.DoEvents()
                    Loop
                Else
                    Do While i < BytesWillRec
                        ReDim priBytes(priTcpData.ReceiveBufferSize)
                        intBytesRec = priDataStream.Read(priBytes, 0, CInt(priTcpData.ReceiveBufferSize))
                        priSM.Write(priBytes, 0, intBytesRec)
                        i = i + intBytesRec
                    Loop
                End If

                OtherPortGet = priSM
                priTcpData.Close()
            Catch err As Exception
                MsgBox(err.ToString())
            End Try
        Else
            MsgBox("&curren;£±µ&uml;ü­t&frac14;ưÑ&frac14;Æ¡I")
        End If
    End Function


Is iemand bekend met dit probleem? Het moet kunnen lijkt me maar hoe 8)7

[ Voor 5% gewijzigd door Verwijderd op 13-10-2003 12:39 ]


Verwijderd

Topicstarter
Is er niemand die enig idee heeft wat het kan zijn? Ik heb nu het command "NLST " gebruikt om de filelist alleen terug te krijgen. Nu krijg ik alleen maar 1 bestand terug. Meer krijg ik er niet uit.
Zijn er geen mensen die misschien een hint kunnen geven waar het aan kan liggen?

  • whoami
  • Registratie: December 2000
  • Nu online
Waarom maak je je het jezelf niet wat makkelijker, en gebruik je geen StreamReaders?

code:
1
2
3
4
5
6
StreamReader sr = new StreamReader(myStream);

while( sr.DataAvailable )
{
    string s = sr.ReadLine();
}

[ Voor 44% gewijzigd door whoami op 14-10-2003 21:03 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
hmm dat kan ik nog proberen natuurlijk maar zou dan het probleem misschien opgelost zijn? ik vind het zo raar dat het in mijn interne netwerk wel gaat en daarbuiten niet.