收录日期:2019/07/17 12:55:05 时间:2016/06/08 02:53:16 标签:VB.NET
Private Function createDataSocket() As Socket

   Me.sendCommand("PASV")
   If Not Me.resultCode = 227 Then
      FireException(Me.result.Substring(4))
   End If

   Dim index1 As Integer = Me.result.IndexOf("(")
   Dim index2 As Integer = Me.result.IndexOf(")")

   Dim ipData As String = Me.result.Substring(index1 + 1, index2 - index1 - 1)

   Dim parts(6) As Integer

   Dim len As Integer = ipData.Length
   Dim partCount As Integer = 0
   Dim buf As String = ""

   Dim i As Integer
   i = 0
   Do While (i < len And partCount <= 6)
      Dim ch As Char = Char.Parse(ipData.Substring(i, 1))

      If Char.IsDigit(ch) Then
         buf = buf & ch
      Else
         If ch <> "," Then
            FireException("Malformed PASV result: " & result)
         End If
      End If

      If ch = "," Or i = len - 1 Then
         Try                    
            parts(partCount) = Integer.Parse(buf)
            partCount = partCount + 1
            buf = ""
         Catch ex As Exception
            FireException("Malformed PASV result (not supported?): " & Me.result, ex)
         End Try
      End If

      i = i + 1
   Loop

   Dim ipAddress As String = parts(0) & "." & parts(1) & "." & parts(2) & "." & parts(3)

   Dim port As Int32 = Convert.ToInt32(parts(4) << 8) + Convert.ToInt32(parts(5))

   Dim socket As Socket = Nothing
   Dim ep As IPEndPoint = Nothing

   Try
      socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
      ep = New IPEndPoint(Dns.Resolve(ipAddress).AddressList(0), port)
      socket.Connect(ep)
   Catch ex As Exception
      'doubtfull....
      If (Not (socket Is Nothing) And socket.Connected) Then
         socket.Close()
      End If 
      FireException("Can't connect to remote server", ex)
   End Try

   Return socket

End Function

复杂,没看懂
这是一段C#写的FTP类,我把它改写为VB.NET。
在读取FTP服务器文件目录时,执行socket.Connect(ep)时,遇到错误:
"由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。"

经分析下来,问题可能在连接FTP服务器的模式上。
(使用AbsoultFTP和CuteFTP均可访问此服务器,它们采用的是PORT模式.)

环境:本地是局域网中的一台客户端,ADSL上网,连外网上的FTP服务器。
程序能访问局域网内的两台FTP服务器,但连外网上的FTP服务器且出现上述的错误提示(PASV模式下),
所以想用PORT模式,下面是我的PORT的使用:
====================================================
Private Function createDataSocket() As Socket

Dim strT As String
strT = "192,168,42,27,19,70"
Me.sendCommand("PORT " & strT)
If Not Me.resultCode = 200 Then
  FireException(Me.result.Substring(4))
End If

Dim ipAddress As String = Me.strServer
Dim port As Int32 = 19 * 256 + 70

Dim socket As Socket = Nothing  'null
Dim ep As IPEndPoint = Nothing  'null

Try
  socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
  ep = New IPEndPoint(Dns.Resolve(ipAddress).AddressList(0), port)
  socket.Connect(ep)
Catch ex As Exception
  'doubtfull....
  If (Not (socket Is Nothing) And socket.Connected) Then
     socket.Close()
  End If
  FireException("Can't connect to remote server", ex)
End Try

Return socket

End Sub
====================================================
但问题依旧,所以想问问看PORT是如何使用的?还是问题根本不在此处?


不会吧,一会儿又沉下去了,这个FTP的话题,就没多少人感兴趣?
自己顶

参加过DB2的认证考试的请进 linux中用fork启动新进程后,我有一些疑问!请大家帮忙解释下! 如何改变Crystal Report的图形的形状?? c# .net写的webservice放在另一台server2000的IIS网站中后,没有返回结果是怎么回事?还应该安装些什么? 请教如何将XML转换成文本文件?? 出售诺基亚,摩托罗拉,三星,索爱等手机数据线,MMC卡等 请教如何枚举子网内的主机? 在创建多层分布式系统的客户端时,提示‘拒绝访问’ 刚通过NCS的笔试和面试,本来只是想做一下兼职的,但是对方要求最好是Full-time全职,现在决定权在我,大家对NCS了解多吗?多谢! 关于java的telnet程序受信方面的问题!快点救救我呀!可以再加100分! EFI——请问这里有人研究这种东西么? 如何在字段输入时进行限制. 请问Excel能不能生成带水印的报表啊??? [专题]delhpi的子函数function- function-begin-end-begin-end在其他语言中的使用 成教文凭好还是电大好? 大哥哥们,那个知道GTK下载了,怎么编译 然后安装,具体怎么做,在线等???? 奇怪的 问题。。。 请大家帮忙看看,谢谢 刚才经理过来看我在冲奶,说:你喝白开水不行啊,冲奶多耽误时间,赶紧抓紧时间工作,你看别人都工作呢,就你闲着。MaBiDe没给气死,现在 急急!!!!在线等!! 讨论一个Query查询方法的问题 大哥哥们,那个知道GTK下载了,怎么编译 然后安装,具体怎么做,在线等???? 做登陆框的问题,运行时出现这样的错误... 急求 WIN2000/XP 下 downloader.trojan 查杀方法 在线等 ! 如何获得超链接的名字? 刚才经理过来看我在冲奶,说:你喝白开水不行啊,冲奶多耽误时间,赶紧抓紧时间工作,你看别人都工作呢,就你闲着。MaBiDe没给气死,现在 對方的SERVER的PORT是4867,我該怎麼建LINKSERVER 把一个对像集合绑定到DataGrid,怎么进行columntext排序? 错误1069(由于登陆失败而无法启动服务),此时正在MSSQLServer服务上执行该服务操作 刚才经理过来看我在冲奶,说:你喝白开水不行啊,冲奶多耽误时间,赶紧抓紧时间工作,你看别人都工作呢,就你闲着。MaBiDe没给气死,现在 又是问题:oracale8不支持left outer join 么,在线急等!立即揭帖