powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить и отправить файл через локальную сеть
3 сообщений из 3, страница 1 из 1
Получить и отправить файл через локальную сеть
    #38763612
kirpix524
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый!
Есть проект на VS 2005 для Pocket PC. Необходимо получить файл с главного компьютера, обработать его и отправить обратно. Сначала хотел сделать с помощью Microsoft.VisualBasic.Devices, но по ходу выяснилось, что в Compact Framework нет этого неймспейса. Тогда решили поднять на главной машине фтп-сервер и подключаться к нему. Для этого попробовал сделать следующее:

Код: vbnet
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

Еще была попытка сделать так:

Код: vbnet
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".
...
Рейтинг: 0 / 0
Получить и отправить файл через локальную сеть
    #38763634
kirpix524
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не написал, язык разработки Visual Basic
...
Рейтинг: 0 / 0
Получить и отправить файл через локальную сеть
    #38763665
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kirpix524язык разработки Visual Basicязык разработки Visual Basic.NET, поэтому тема перенесена
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить и отправить файл через локальную сеть
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]