zoukankan      html  css  js  c++  java
  • VB.Net实现登陆Ftp的方法

    开发环境 VB.Net2005   Windows2003  

    '调用方式

            If Logined() Then
                MsgBox("登陆成功")
            Else
                MsgBox("登陆失败")
            End If

    '功能函数

    Imports System
    Imports System.Net
    Imports System.IO
    Imports System.Text
    Imports System.Net.Sockets

        Public Const BLOCK_SIZE = 512
        Private Obj_ClientSocket As Socket
        Private Str_Domain As String = "ftp.lob.cn"          'ftp服务器地址
        Private Str_User As String = "lob"                       'ftp登陆帐号
        Private Str_Password As String = "www.lob.cn"    'ftp登陆密码
        Private Int_RemotePort As Integer = 21              'ftp服务器端口
        Private Int_Reply, Int_Bytes As Int32
        Private Str_Message, Str_Reply As String
        Private Byte_Buffer(BLOCK_SIZE) As Byte
        Private ASCII As Encoding = Encoding.ASCII

      Public Function Logined() As Boolean  '乐博网www.lob.cn会员逍遥原创 

            Obj_ClientSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
            Dim x_lob As New IPEndPoint(Dns.GetHostEntry(Str_Domain).AddressList(0), Int_RemotePort)
            Try
                Obj_ClientSocket.Connect(x_lob)
            Catch ex As Exception
                MsgBox("无法登陆远程Ftp服务器")
            End Try
            Str_Message = ""
            Str_Reply = ServerReply()
            Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
            If (Int_Reply <> 220) Then
                MsgBox(Str_Reply.Substring(4))
            End If

            SendCommand("USER " & Str_User)
            Str_Reply = ServerReply(True)
            Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
            If (Not (Int_Reply = 331 Or Int_Reply = 230)) Then
                MsgBox(Str_Reply.Substring(4) )
                Return False
            End If

            If (Int_Reply <> 230) Then
                SendCommand("PASS " & Str_Password)
                Str_Reply = ServerReply(True)
                Int_Reply = Int32.Parse(Str_Reply.Substring(0, 3))
                If (Not (Int_Reply = 230 Or Int_Reply = 202)) Then
                    MsgBox(Str_Reply.Substring(4))
                    Return False
                End If
            End If

            Return True

        End Function

        Private Function ServerReply(Optional ByVal Bool_Clear As Boolean = False) As String

            Dim Sep As Char = ControlChars.Lf
            Dim Arr_Msg() As String
            If (Bool_Clear) Then
                Str_Message = ""
            End If
            Do While (True)
                Array.Clear(Byte_Buffer, 0, BLOCK_SIZE)
                Int_Bytes = Obj_ClientSocket.Receive(Byte_Buffer, Byte_Buffer.Length, 0)
                Str_Message += ASCII.GetString(Byte_Buffer, 0, Int_Bytes)
                If (Int_Bytes < Byte_Buffer.Length) Then
                    Exit Do
                End If
            Loop
            Arr_Msg = Str_Message.Split(Sep)
            If (Str_Message.Length > 2) Then
                Str_Message = Arr_Msg(Arr_Msg.Length - 2)
            Else
                Str_Message = Arr_Msg(0)
            End If
            If (Not (Str_Message.Substring(3, 1).Equals(" "))) Then
                Return ServerReply(True)
            End If
            Return Str_Message

        End Function


        Private Sub SendCommand(ByVal Str_Command As String)

            Str_Command = Str_Command & ControlChars.CrLf
            Dim cmdbytes As Byte() = ASCII.GetBytes(Str_Command)
            Obj_ClientSocket.Send(cmdbytes, cmdbytes.Length, 0)

        End Sub

  • 相关阅读:
    值不丢失,虽然仅在局部函数中存在
    js 中和c类似
    天天QA
    request methods Hypertext Transfer Protocol (HTTP/1.1)
    单元测试
    access variables from the global scope 在全局范围内访问变量的2种方法
    summary
    安全跟效率之间的折中而已 记住一个大原则,安全和效率是对立的
    微信商城 Common Log Format Apache CustomLog
    僵尸进程 zombie
  • 原文地址:https://www.cnblogs.com/NetPig/p/2096805.html
Copyright © 2011-2022 走看看