Получить и отправить файл через локальную сеть
#38763612
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
День добрый!
Есть проект на VS 2005 для Pocket PC. Необходимо получить файл с главного компьютера, обработать его и отправить обратно. Сначала хотел сделать с помощью Microsoft.VisualBasic.Devices, но по ходу выяснилось, что в Compact Framework нет этого неймспейса. Тогда решили поднять на главной машине фтп-сервер и подключаться к нему. Для этого попробовал сделать следующее:
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. 39.
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 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
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Sub GetFile(ByVal FilePath As String, ByVal ServerPath As String, ByVal Mode As String)
Dim rc&
Dim rs&
Try
rc& = InternetOpen("VB app", 0, vbNullString, vbNullString, 0)
Catch ex As Exception
MsgBox("Ошибка: " & ex.Message)
Exit Sub
End Try
Try
rs& = InternetConnect(0, settings.ftpAddres, settings.ftpPort, settings.ftpLogin, settings.ftpPassword, 1, 0, 0)
Catch ex As Exception
MsgBox("Ошибка: " & ex.Message)
Exit Sub
End Try
If Mode = "GET" Then
If FtpGetFile(rs&, ServerPath, FilePath, False, 0, 1, 0) = False Then
MsgBox("Ошибка получения файла!", vbExclamation)
Exit Sub
End If
ElseIf Mode = "PUT" Then
If FtpPutFile(rs&, FilePath, ServerPath, 1, 0) = False Then
MsgBox("Ошибка отправки файла!", vbExclamation)
Exit Sub
End If
Else
MsgBox("Неправильно переданы параметры в функцию GetFile!")
Exit Sub
End If
Call InternetCloseHandle(rs&)
Call InternetCloseHandle(rc&)
End Sub
не прокатило, подозреваю опять же из-за мобильной винды, не имеющей wininet.dll
Еще была попытка сделать так:
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.
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Function URLDownload(ByVal sURL As String, ByVal sTempFilePath As String) As Boolean
On Error Resume Next
Dim lErrcode As Long
lErrcode = URLDownloadToFile(0&, sURL, sTempFilePath, 0&, 0&)
If lErrcode = 0 Then
'MsgBox "Download ok"
' на всякий случай проверка файла на диске
If File.Exists(sTempFilePath) = True Then
URLDownload = True
Else
MsgBox("файл не скопирован!")
URLDownload = False
End If
'URLDownload = True
Else
' нет инета или нет сайта
'MsgBox "Error while downloading"
URLDownload = False
End If
End Function
Private Sub GetFile(ByVal FilePath As String, ByVal ServerPath As String, ByVal Mode As String)
Dim rez As Boolean
Dim link As String = "ftp://192.168.2.50/share/load.txt"
rez = URLDownload(link, FilePath)
MsgBox("rez = " & rez.ToString)
End Sub
здесь не вылетало никаких ошибок, даже функция вернула True, но файл не скопировался.
Даже и не знаю, что еще можно предпринять. Возможно кто-то сталкивался с такой проблемой?
Модератор: Тема перенесена из форума "Visual Basic".
|
|