網頁文章 網頁文章

 

Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Module Module1


    Public Sub Main()

        Dim del_file As String = "c:\TestFile5.txt"
    
        Dim msg(40102400) As Byte
        Dim server As TcpListener
        server = Nothing
        Try

            Dim port As Int32 = 21
            Dim localAddr As IPAddress = IPAddress.Parse("192.168.0.126")

            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            server = New TcpListener(localAddr, port)
            server.Start()

            While True

                Console.Write("Waiting for a connection... ")
                Dim client As TcpClient = server.AcceptTcpClient()
                Console.WriteLine("Connected!" & ControlChars.CrLf)

                Dim clientInfo As IPEndPoint = CType(client.Client.RemoteEndPoint, IPEndPoint)
                Console.WriteLine("Client: " + clientInfo.Address.ToString() + ":" + clientInfo.Port.ToString())

                Dim stream As NetworkStream = client.GetStream()
                Dim strMsg As String

                strMsg = "220 .NET FTP Server - (Version 1.0.0) " & "- ready." & ControlChars.CrLf & _
                   "220 Welcome to .NET FTP Server" & ControlChars.CrLf
                msg = Encoding.ASCII.GetBytes(strMsg)
                stream.Write(msg, 0, msg.Length)

                Dim i As Integer
                i = stream.Read(bytes, 0, bytes.Length)

                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                Console.WriteLine("Received: {0}", data)

                If ((data.IndexOf("anonymous")) >= 0) Then
                    strMsg = "331 Password required for PASS" & ControlChars.CrLf
                    msg = Encoding.ASCII.GetBytes(strMsg)
                    stream.Write(msg, 0, msg.Length)
                End If

                i = stream.Read(bytes, 0, bytes.Length)

                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                Console.WriteLine("Received: {0}", data)

                If ((data.IndexOf("123456")) >= 0) Then
                    strMsg = "230 user login" & ControlChars.CrLf
                    msg = Encoding.ASCII.GetBytes(strMsg)
                    stream.Write(msg, 0, msg.Length)
                End If

                i = stream.Read(bytes, 0, bytes.Length)

                data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                Console.WriteLine("Received: {0}", data)

                If ((data.IndexOf("DELE")) >= 0) Then


                    If File.Exists(del_file) Then

                        Dim fileInfo As FileInfo = New FileInfo(del_file)
                        ' File is Read-Only
                        If fileInfo.Attributes = FileAttributes.ReadOnly Then
                            Console.WriteLine("550 " & del_file & ": Access is denied.")
                        Else
                            ' Delete File 
                            File.Delete(del_file)
                            Console.WriteLine("250 DELE command successful.")
                        End If
                    Else
                        Console.WriteLine("550 " & del_file & ": The system cannot find the file specified.")
                    End If

                    strMsg = "200 Command success" & ControlChars.CrLf
                    msg = Encoding.ASCII.GetBytes(strMsg)
                    stream.Write(msg, 0, msg.Length)
                End If

                client.Close()

            End While

        Catch e As SocketException
            Console.WriteLine("SocketException: {0}", e)
        Finally
            server.Stop()
        End Try

        Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")

    End Sub 'Main

End Module