1 / 1 / 0
Регистрация: 06.12.2015
Сообщений: 89
1

Передача данных используя протокол TCP/IP

31.10.2017, 23:00. Показов 6854. Ответов 21
Метки нет (Все метки)

Есть код программы(не мой, из инета), позволяющий передавать файлы используя протокол TCP/IP. Может кто подскажет, есть ли возможность передачи не одного конкретного выбранного файла, а всех файлов выбранной директории. И как это прописать?
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 Private Sub FileOtpravka_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileOtpravka.Click
        Dim IP As String = IPDest.Text
        Dim Port As Integer = PortDest.Value
        Dim dialog As New System.Windows.Forms.OpenFileDialog
        dialog.Title = "выберите файл"
        dialog.Filter = "все файлы(*.*)|*.*"
        dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
        dialog.Multiselect = True
        Dim dr = dialog.ShowDialog()
        If dr = Windows.Forms.DialogResult.Cancel Then Exit Sub
        Application.DoEvents()
        Try
            client.SendFiles(IP, Port, dialog.FileNames)
        Catch ex As Exception
            MsgBox("ошибка отправки файла")
        End Try
    End Sub
заранее спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2017, 23:00
Ответы с готовыми решениями:

Передача данных между программами через TCP/IP
При передаче через сокет между двумя прогами на одном компе (т.е. на адрес 127.0.0.1) все данные...

TCP протокол отправка данных на сервер
Я передаю с TCP клиента на сервер изображение и хочу передать его размер. Как лучше передавать на...

Как происходит получение данных через протокол TCP
Имеется клиент-серверное приложение: using System; using System.Collections.Generic; using...

Передача данных по TCP/IP
Здравствуйте! Подскажите: как передать двоичные данные через TCP/IP, предварительно сжав их и...

21
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
31.10.2017, 23:10 2
panso, а кто такой client?
вы бы весь код показали.
0
1 / 1 / 0
Регистрация: 06.12.2015
Сообщений: 89
31.10.2017, 23:13  [ТС] 3
VB.NET
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Public Class Form1
    Dim client As New UNOLibs.Net.ClientClass
    Dim WithEvents Server As UNOLibs.Net.ServerClass
 
    Private Sub KnopkaOtpravkiMsg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles KnopkaOtpravkiMsg.Click
        Dim IP As String = IPDest.Text
        Dim Port As Integer = PortDest.Value
        Dim DATA As Integer = IshodMesssage.Text
        Try
            client.SendMessage(IP, Port, DATA)
        Catch ex As Exception
            MsgBox("ошибка отправки сообщения")
        End Try
    End Sub
 
    Private Sub FileOtpravka_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FileOtpravka.Click
        Dim IP As String = IPDest.Text
        Dim Port As Integer = PortDest.Value
        Dim dialog As New System.Windows.Forms.OpenFileDialog
        dialog.Title = "выберите файл"
        dialog.Filter = "все файлы(*.*)|*.*"
        dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
        dialog.Multiselect = True
        Dim dr = dialog.ShowDialog()
        If dr = Windows.Forms.DialogResult.Cancel Then Exit Sub
        Application.DoEvents()
        Try
            client.SendFiles(IP, Port, dialog.FileNames)
        Catch ex As Exception
            MsgBox("ошибка отправки файла")
        End Try
    End Sub
 
    Private Sub StartStopKnopka_Click(ByVal sender As Object, ByVal e As EventArgs) Handles StartStopKnopka.Click
        If (Server Is Nothing) Then
            Me.IncomingMessage.Items.Clear()
            Dim Port As Integer = ServerPort.Value
            Server = Nothing
            Server = New UNOLibs.Net.ServerClass(Port, True, "c:\")
            Label2.Text = "путь для входящих файлов" + Server.IncomingPath
            Me.StartStopKnopka.Text = "стоп"
        Else
            Server.StopServer()
            Me.StartStopKnopka.Text = "старт"
            Label2.Text = "сервер не запущен"
        End If
    End Sub
 
    Private Sub onIncomingMessage(ByVal Args As UNOLibs.Net.ServerClass.InMessEvArgs) Handles Server.IncomingMessage
        Me.IncomingMessage.Items.Add(Args.senderIP + "-->" + Args.message)
        Me.IncomingMessage.SelectedIndex = Me.IncomingMessage.Items.Count - 1
        If Args.senderIP.Equals(Server.LocalIP) Then
            MsgBox("Это сообщение адресовано не этому компьютеру")
        End If
    End Sub
    Private Sub OnDiagnostMessage(ByVal Args As String) Handles Server.DiagnosticMessage
        Me.IncomingMessage.Items.Add(Args)
        Me.IncomingMessage.SelectedIndex = Me.IncomingMessage.Items.Count - 1
    End Sub
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        Me.IPDest.Text = UNOLibs.Net.NetInterop.GetLocalIP
        Me.LocalIPLabel.Text = "Локальный IP:" + IPDest.Text
    End Sub
    Private Sub KnopkaVibPapk_Click(ByVal sender As Object, ByVal e As EventArgs) Handles KnopkaVibPapk.Click
        Dim dialog As New System.Windows.Forms.FolderBrowserDialog
        dialog.SelectedPath = ""
        dialog.ShowNewFolderButton = True
        Dim dr As DialogResult = dialog.ShowDialog
        If dr = DialogResult.OK Then
            If Server.IsRunning Then
                If dialog.SelectedPath.EndsWith("/") Then
                    Server.IncomingPath = dialog.SelectedPath
                Else
                    Server.IncomingPath = dialog.SelectedPath + "/"
                End If
                Label2.Text = "genm lkz"
            End If
        End If
    End Sub
 
    
End Class
1
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
31.10.2017, 23:15 4
UNOLibs?
а к ней документации нет?
это не стандартная библиотека.
0
1 / 1 / 0
Регистрация: 06.12.2015
Сообщений: 89
31.10.2017, 23:22  [ТС] 5
тупо скаченный с интернета
0
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
31.10.2017, 23:24 6
вы можете в серверной части по окончании загрузки файла отправить флаг клиенту о том что файл загружен и можно слать еще, и если у клиента в очереди есть еще файла - послать следующий...
Либо пакуйте в архив или массив байт с разделителем и посылайте.
можно строкой в Base64... на сколько хватит фантазии
1
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
01.11.2017, 07:10 7
Насколько я вижу код, то
VB.NET
1
client.SendFiles(IP, Port, dialog.FileNames)
посылает не 1 файл а массив из файлов.
FileNames - Возвращает имена всех выбранных файлов в диалоговом окне.(Наследуется от FileDialog.)
А следовательно как и сказал "предыдущий оратор" надо знать как работает сторонняя библиотека именуемая "UNOLibs.Net.ClientClass"
И как это прописать?
Уже прописано.
VB.NET
1
dialog.Multiselect = True
2
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
01.11.2017, 07:29 8
Hell666, нужно смотреть какие параметры может принимать функцию SendFiles. Нсли только один файл, тогда как и говорил выше, создать очередь и посылать каждый после ответа с сервера об окончании приема.
Если же принимает имена файлов массивом - тогда незнаю, что-то в самой библиотеке значит. Кто знает как она там работает. Только декомпилировать и смотреть.
0
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
01.11.2017, 08:58 9
client.SendFiles и dialog.FileNames
ну не думаю что писали библиотеку незнающие английский пиплы.
Как бы и так понятно из кода что именно принимает client.SendFiles. IP, Port и FileNames.
Причем у dialog есть FileName. Но нет. Написано именно Names. И наверно не просто так мультиселект установлено в тру в коде? ;-)

Добавлено через 24 минуты
"ClientClass Usage

Create the ClientClass Instance
VB.NET
1
Dim Client As New UNOLibs.Net.ClientClass
Sending messages(bytes/data) to any server on specified IP/PORT is very easy.
VB.NET
1
Client.SendMessage(IP, PORT, DATA)
Sending files to specified IP/PORT is very easy.
VB.NET
1
Client.SendFiles(IP, PORT, dialog.FileNames)
That's it for the client!!!"
https://www.codeproject.com/Ar... -more-ease
https://www.cyberforum.ru/post1363700.html

Добавлено через 48 минут
Если надо посылать в этом "кастрате" (в смысле в классе, обходящимся без событий типа SendFileOk и SendFileError) несколько файлов поочереди то цикл:

VB.NET
1
2
3
For Each file as String In dialog.FileNames
Client.SendFiles(IP, PORT, file)
Next
Но.... опять же надо либо знать, либо смотреть методом научного тыка как он отправляет файлы, асинхронно или нет.
1
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
01.11.2017, 09:25 10
panso, вот я не понял, при передаче нескольких файлов у вас ошибка появляется?
Hell666, читать я тоже умею. Но раз ТС обратился за помощью, значит что-то пошло не так с этим SendFiles.
И как я сказал выше, нужно посмотреть Как именно выполняется отправка нескольких файлов в коде самой библиотеки.
0
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
01.11.2017, 09:41 11
Yury Komar, Что пошло не так и так понятно раз у других работает. Здесь может пойти только одно не так. Не выбрано несколько файлов как сказано у "товарища"
есть ли возможность передачи не одного конкретного выбранного файла, а всех файлов выбранной директории.
Добавлено через 9 минут
И... он нигде не пишет про ошибку передачи, а про "есть ли возможность".
0
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
01.11.2017, 09:42 12
Hell666, именно. просмотрел...
ТС выполняет передачу имен файлов на результат диалога, равный CANCEL. Тоесть в функцию он передает Nothing
Че то сразу на это не обратил внимание )
0
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
01.11.2017, 09:46 13
Да нет. У него все в норме.
VB.NET
1
2
3
If dr = Windows.Forms.DialogResult.Cancel Then Exit Sub
Try
            client.SendFiles(IP, Port, dialog.FileNames)
А вот сколько файлов выбрано это Большой вопрос?
0
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
01.11.2017, 09:47 14
Hell666, а разве я сказал что он пишет про ошибку? Я спросил его об этом, так как он этого нн указал...
1
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
01.11.2017, 10:02 15
Yury Komar, Ну так я смело и предположил, что если вопрос не "Почему ошибка в передаче нескольких файлов", а "Есть ли возможность передачи нескольких файлов", то вобщем-то ошибки то и нет.

Добавлено через 8 минут
И еще вот эта "катавасия" явно излишне.
VB.NET
1
2
Dim dr = dialog.ShowDialog()
If dr = Windows.Forms.DialogResult.Cancel Then Exit Sub
помом достаточно
VB.NET
1
If dialog.ShowDialog = DialogResult.Cancel Then Exit Sub
1
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
01.11.2017, 13:42 16
Hell666, вот что выполняет функция SendFiles... Так и есть, она создает очередь и посылает файлы по-очереди).
VB.NET
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
Public Sub SendFiles(ByVal Ip As String, ByVal Port As Integer, ByVal filenames As String())
    Dim num As Integer
    Dim code As String = "**!**-0-2-0-SC-FT"
    If Me.isSendingFile Then
        If (StringType.StrCmp(Me.CurrFileAddr.ToString, Ip, False) = 0) Then
            Dim num3 As Integer = (filenames.Length - 1)
            num = 0
            Do While (num <= num3)
                Me.FileQueque.Push(filenames(num))
                num += 1
            Loop
        End If
    Else
        Me.FilePort = Me.RequestPort(Ip, Port, code)
        If (Me.FilePort = 0) Then
            Throw New Exception("Error retriving port from server")
        End If
        Dim num2 As Integer = (filenames.Length - 1)
        num = 0
        Do While (num <= num2)
            Me.FileQueque.Push(filenames(num))
            num += 1
        Loop
        Me.CurrFileAddr = Dns.Resolve(Ip).AddressList(0)
        New Thread(New ThreadStart(AddressOf Me.SendFilesTS)).Start
    End If
End Sub
1
1 / 1 / 0
Регистрация: 06.12.2015
Сообщений: 89
01.11.2017, 23:19  [ТС] 17
вопрос в основном заключался в передаче всех содержащихся файлов в выбранной папке, не открывая ее и не выделяя в ней необходимые файлы. слегка автоматизировать и упростить свою работу. у меня несколько папок в которые поступают данные в виде текстовых файлов. и на основе данного кода создать программу с возможностью работы с несколькими удаленными рабочими столами. и каждому определить папку для пересылки.

Добавлено через 1 минуту
а так ошибок сей код - не выдает
всем спасибо за оказанную помощь
0
Модератор
Эксперт .NET
3363 / 3023 / 463
Регистрация: 27.01.2014
Сообщений: 5,623
02.11.2017, 03:29 18
так вы условие то уточняйте в вопросе... а мы тут гадаем что ж там не так.
0
Лень — мое второе и
3038 / 2252 / 656
Регистрация: 28.11.2014
Сообщений: 3,444
Записей в блоге: 2
03.11.2017, 11:25 19
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

panso, в этом случае проще использовать FolderBrowserDialog, после выбора целевого каталога, осуществить в нем поиск файлов по маске "*.*" и передать массив полученных файлов в client.SendFiles
2
23 / 23 / 6
Регистрация: 11.02.2017
Сообщений: 80
03.11.2017, 11:37 20
Ты не то загнул.
https://docs.microsoft.com/en-... -and-files
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2017, 11:37

Передача данных по TCP/IP
Подскажите куда копать, есть ПО из которого можно-нужно забирать данные по IP и порту. есть...

Передача данных IP/TCP
Здравствуйте! Начал изучать сети, назрел вопрос. Если используются IP/TCP. Допустим, я скидываю...

Передача данных через TCP
В общем, что мне нужно, что бы вы написали код как можно осуществить данную передачу. Я уже знаком...

TSocket передача данных по tcp
Кто юзал System.Net.Socket помогите разобраться или есть у кого примеры? Не могу даже создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.