Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Проблемма с FTP Добавлено: 02.04.08 07:51  

Автор вопроса:  JacK | Web-сайт: idiot.ru | ICQ: 9580088 
У меня не получается подключится к FTP

Private Sub Command1_Click()

Inet1.AccessType = icUseDefault
Inet1.Protocol = icFTP
Inet1.RemoteHost = "ftp.log3.jino-net.ru"
Inet1.RemotePort = 21
Inet1.UserName = "log3"
Inet1.Password = "pass"
Inet1.Execute "ftp://ftp.log3.jino-net.ru/tmp/", "Put C:\123.exe 123.exe"

End Sub

Ошибка: "unable to connect to remote host"
При этом виснет программа.
Нашёл такое разьяснение, как мне кажется причина в этом:
http://www.visualbasicsource.net/KnowledgeBase/q173265.txt
глючная MSINET.OCX, скачал, постави но ничего не изменилось.
Как можно подконектится? Где ошибка?
Меня интересует как можно сохранить файл(или данные) на сервере.
Может какой нибудь Upload, посоветуйте?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Hunter



Вопросов: 23
Ответов: 71
 Профиль | | #1 Добавлено: 02.04.08 08:06
Меня интересует как можно сохранить файл(или данные) на сервере.
Может какой нибудь Upload, посоветуйте?


используй сокеты - компонента winsock

Ответить

Номер ответа: 2
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #2
Добавлено: 02.04.08 15:14
Каким образом? Мне нужно передать файл на сайт. А для этого компонента, как я понмаю нужна серверная и клиентская часть т.е. он подойдёт для прямой перекачки файлов. Разве можно таким образом передать файлы?
Если да, то приведите пример.

Ответить

Номер ответа: 3
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #3 Добавлено: 02.04.08 16:38
не надо там серверной часть. отсылаешь запрос на сервак и прослушиваешь определенный порт. в данном случае - 21

Ответить

Номер ответа: 4
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #4
Добавлено: 03.04.08 13:12
Можешь пример привести? Что-то я не врубаюсь как туда запрос с логином и паролем отпраить и как команды выполнять? SendData ?

Ответить

Номер ответа: 5
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #5 Добавлено: 03.04.08 15:29
Почитай про ftp'шный протокол. SendData отсылаешь команду + пароль, к примеру. Далее слушаешь порт на предмет ответа.

Ответить

Номер ответа: 6
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #6 Добавлено: 03.04.08 15:44
А вот тебе на API кое-что: http://www.easycoding.org/?showpage=23&where=vb

Ответить

Номер ответа: 7
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #7
Добавлено: 03.04.08 21:40
Апи почему-то у меня даже не пытается запрос отправлять просто пишет ошибку) вот например в чём проблемма?
Private Declare Function InternetOpen _
Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, _
ByVal nAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal nFlags As Long) As Long

Private Declare Function InternetConnect _
Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, _
ByVal sServerName As String, _
ByVal nServerPort As Integer, _
ByVal sUserName As String, _
ByVal sPassword As String, _
ByVal nService As Long, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Long

Private Declare Function FtpPutFile _
Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean

Private Declare Function InternetCloseHandle _
Lib "wininet.dll" (ByVal hInet As Long) As Integer

Private Sub Command1_Click()
hINetSession = InternetOpen("MyFTPClient", 0, vbNullString, vbNullString, 0)
hSession = InternetConnect(hINetSession, "ftp.log3.jino - net.ru", "21", "log3", "pass", INTERNET_SERVICE_FTP, 0, 0)
If FtpPutFile(hSession, "c:\log.txt", "log.txt", 1, 0) = False Then
Label1.Caption = "!!!"
Call InternetCloseHandle(hSession)
Call InternetCloseHandle(hINetSession)
End If
End Sub

Он даже и не пытается конектится, может это для виндовса 98?))) Хотя смотрел wininet.dll - есть такая) Но не работает!

Ответить

Номер ответа: 8
Автор ответа:
 JacK



ICQ: 9580088 

Вопросов: 13
Ответов: 1078
 Web-сайт: idiot.ru
 Профиль | | #8
Добавлено: 04.04.08 05:20
Опаньки, спасибо всем я разобрался, понял свои ошибки)) Выкладываю рабочую версию... может кому пригодится))
Это модуль:
Public Declare Function InternetConnect _
   Lib "wininet.dll" Alias "InternetConnectA" ( _
   ByVal hInternetSession As Long, _
   ByVal sServerName As String, _
   ByVal nServerPort As Integer, _
   ByVal sUserName As String, _
   ByVal sPassword As String, _
   ByVal nService As Long, _
   ByVal dwFlags As Long, _
   ByVal dwContext As Long) As Long

Public Const INTERNET_SERVICE_FTP = 1

Public Declare Function FtpGetFile _
   Lib "wininet.dll" Alias "FtpGetFileA" ( _
   ByVal hFtpSession As Long, _
   ByVal lpszRemoteFile As String, _
   ByVal lpszNewFile As String, _
   ByVal fFailIfExists As Boolean, _
   ByVal dwFlagsAndAttributes As Long, _
   ByVal dwFlags As Long, _
   ByVal dwContext As Long) As Boolean
   
   Public Declare Function FtpPutFile _
   Lib "wininet.dll" Alias "FtpPutFileA" ( _
   ByVal hFtpSession As Long, _
   ByVal lpszLocalFile As String, _
   ByVal lpszRemoteFile As String, _
   ByVal dwFlags As Long, _
   ByVal dwContext As Long) As Boolean

Public Declare Function InternetCloseHandle _
   Lib "wininet.dll" (ByVal hInet As Long) As Integer

Тут только две функции, GET и PUT. Остальны на: http://www.codenet.ru/progr/vbasic/FTP.php

Это код формы:

Private Sub Command1_Click()

hINetSession = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)

hSession = InternetConnect(hINetSession, "ftp.log3.jino-net.ru", "21", "log3", _
"pass", INTERNET_SERVICE_FTP, 0, 0)

If FtpGetFile(hSession, "123.exe", "c:\123.exe", False, 0, 1, 0) = False Then
   Label1.Caption = "The call to FtpGetFile failed."
Call InternetCloseHandle(hSession)
Call InternetCloseHandle(hINetSession)
End If
End Sub
Private Sub Command2_Click()
hINetSession = InternetOpen("FTP", 1, vbNullString, vbNullString, 0)

hSession = InternetConnect(hINetSession, "ftp.log3.jino-net.ru", "21", "log3", _
"fuckoff", INTERNET_SERVICE_FTP, 0, 0)

If FtpPutFile(hSession, "c:\log.txt", "log.txt", 1, 0) = False Then
   Label1.Caption = "The call to FtpPutFile failed."
Call InternetCloseHandle(hSession)
Call InternetCloseHandle(hINetSession)
End If
End Sub


Как выяснилось всё до тупости просто. Спасибо всем.

Может кто нибудь ещё знает как загрузить файл через HTTP? Буду признателен))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам