Страница: 1 |
...но если у меня есть необходимость перекачать по винсоку два совершенно разных вида данных... То можно использовать два Winsock з.ы. Оба своих файла можешь слать единовременно. я со смешиванием этим борюсь с помощью команды doevents. после ее юзанья все ок. например был такой прикол с моим примером Многоканальный Winsock 2 (скоро будет 3-й) - там массив винсоков, и к ним подключатся клиенты, а когда надо отослать от сервака данные всем клинтам, я делаю это в цикле, но почему-то данные доходили только до последнего подключенного, но когда поставил doevents - все отлично! А что нужно с этим свойством Index сделать? Вы извините, я не сильно грамотен, мож быть, но почитать про винсок негде. Нигде не написано про это свойство че-то. Индекс - это не совсем свойство элемента это его, как-бы, порядковый номер в массиве элементов того же типа и с тем же именем. WinSock(0), WinSock(1) ... Короче в априори это то о чем я говорил - два Winsock'a Ну допустим так: ws - это твой винсокет чтобы подключится к 2 сервакам используя 1 элемент код должен выглядить так: Sub Command1_click() ws(1).RemotePort=110 ' порт pop сервера ws(2).RemotePort=25 ' порт smtp сервера ws(1).RemoteHost=pop.yandex.ru ws(2).RemoteHost=smtp.yandex.ru ws(1).Connect ws(2).Connect End Sub вот те пожалуйста коды ты нажмёш на Command1 твой сакет подключится к smtp и pop серверу yandex`a Никаких двух винсоков не надо. Просто в начале каждой посылки шли размер передоваемых данных, а при приеме твоя прога таким образом будет понимать, что старых блок данных кончился и начился новый, в начале которого опять таки стоит размер нового блока. З.Ы. Единственно верный подход, ИМХО. Страница: 1 |
Вопрос: Особенности работы Winsock
Добавлено: 17.03.03 09:44
Автор вопроса: kans
Наткнулся на проблему, состоящую в том, что Winsock сначала накапливает в буфере некоторое количество информации, а затем с ней работает. Где-то читал, что это фишка VB, призванная ускорять работу приложения. Возможно так действительно код работает более оптимально, но если у меня есть необходимость перекачать по винсоку два совершенно разных вида данных, тогда получается не хорошо. Ибо отослав первый блок данных, я начинаю слать второй, который записывается в буфер и расценивается клиентом как продолжение первого. Можно ли как-нибодь указать винсоку, что в определенный момент передача завершена и следующая передача - это не продолжение, а именно следующая передача? Или надо связь закрывать, а потом снова открывать?
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
JBit
Вопросов: 0
Ответов: 8
Профиль | | #1
Добавлено: 17.03.03 10:25
Номер ответа: 2
Автор ответа:
kans
Вопросов: 4
Ответов: 7
Профиль | | #2
Добавлено: 17.03.03 10:27
Блин! Жалко что эта мысль мне первому в голову не пришла!
Номер ответа: 3
Автор ответа:
Виталиум!
Вопросов: 25
Ответов: 52
Web-сайт:
Профиль | | #3
Добавлено: 17.03.03 14:31
Номер ответа: 4
Автор ответа:
V!RU$™
ICQ: 132309822
Вопросов: 24
Ответов: 54
Web-сайт:
Профиль | | #4
Добавлено: 17.03.03 15:03
Ну или 2 винсока или можно через свойство Index у винсока ....
Номер ответа: 5
Автор ответа:
kans
Вопросов: 4
Ответов: 7
Профиль | | #5
Добавлено: 17.03.03 16:35
Номер ответа: 6
Автор ответа:
JBit
Вопросов: 0
Ответов: 8
Профиль | | #6
Добавлено: 17.03.03 17:12
Номер ответа: 7
Автор ответа:
V!RU$™
ICQ: 132309822
Вопросов: 24
Ответов: 54
Web-сайт:
Профиль | | #7
Добавлено: 17.03.03 18:06
Номер ответа: 8
Автор ответа:
Alex3
ICQ: 9481061
Вопросов: 18
Ответов: 132
Профиль | | #8
Добавлено: 17.03.03 21:44
Номер ответа: 9
Автор ответа:
kans
Вопросов: 4
Ответов: 7
Профиль | | #9
Добавлено: 18.03.03 08:57
Спасибо ребята. Я уже сделал с doevents. Очень удобно.