Помогите разобраться с FTP

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Помогите разобраться с FTP

Сообщение CORBA » 19.09.2004 (Вс) 14:26

Ознакомился я с протоколом FTP. Решил FTP клиент свой написать, чтобы лучше понять как всё работает.
Так вот создал проэкт, закинул туда текст-боксы, кнопки, и два winsock'а, один для команд, другой для приема и передачи данных.
С заходом на фтп проблем никаких.
Проблема получить список файлов и папок с фтп.
Например, для активного режима шлю команду на сервер:
Winsock1.SendData "PORT 192,168,0,1,7,134" + vbCrLf
тут же ставлю второй winsock на прослушку порта
Winsock2.LocalPort = 7*256+134
Winsock2.Listen

Затем шлю команду LIST:
Winsock1.SendData "LIST" + vbCrLf
так вот после этого на первый винсок приходит ответ 226 Transfer complete . А на второй чё то ничего не приходит.
Вот функции получения данных для первого и второго winsock'a

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Static strRequest As String
wsCmd.GetData strRequest, vbString
End Sub

______________________________________________________

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
wsData.GetData strData, vbString
txtData.Text = strData
End Sub


Кто знает в чём причина подскажите plz. Заранее благодарен.

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 20.09.2004 (Пн) 10:40


CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 20.09.2004 (Пн) 18:58

to CodeMaster
Пример хорош, вот только я использую не wininet, а winsock. И ответ на свой вопрос я в том листинге не нашёл.

PS

Я с этим сайтом хорошо знаком, и много информации подчеркнул имено оттуда. Вот там написанно имено то что я сделал, а как результат активный режим если даже и работает, то я не знаю куда деваются данные присылаемые сервером. Причём этот вопрос также возник у многих американских программистом судя по форуму этого сайта, но на их мольбы о помощи, как я понял, излазив семь страниц форума, никто не может внятно ответить. Вот я кинулся суда, глубоко веря что наш народ гораздо умней и гениальней и раскажет о сути вопроса :)

to All
PPS
Я не такой тупой и могу сам примеры поискать. Так что большая просьба лучше объясните суть вопроса. А программу я хочу сам написать, а не собрать её из кусков чужого кода, как конструктор лего.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 20.09.2004 (Пн) 21:53

Скорее всего, приём идёт кусками, и их нужно складывать в буфере. Иначе получается, навероное, что данные от последнего куска затиают предыдущие.

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 20.09.2004 (Пн) 22:14

Alexanbar писал(а):Скорее всего, приём идёт кусками, и их нужно складывать в буфере. Иначе получается, навероное, что данные от последнего куска затиают предыдущие.

Хорошо, а почему я не вижу последний кусок?, ведь он по этой теории ничем не затираеться :)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.09.2004 (Пн) 23:13

Эх ты, CORBA... А запрос на соединение-то кто примет?
Код: Выделить всё
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
    Winsock2.Close
    Winsock2.Accept requestID
End Sub


С этой добавкой - всё работает, только что проверил.

А люди тут разводят софистику - буфер затирается, видите ли...
Изображение

CORBA
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 22.11.2003 (Сб) 13:41
Откуда: Ukraine-Crimea-Feodosia

Сообщение CORBA » 21.09.2004 (Вт) 10:29

to Tyomich
Не поверишь сёдня ночью поставил файрвол и убедился что данные приходят на порт. И меня осенило, что что-то не так в коде. Просто у меня опыта маловато - это моя первая прога для сети :) Спасибо за подсказку. Примного благодарен.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList