Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Особенности работы Winsock Добавлено: 17.03.03 09:44  

Автор вопроса:  kans
Наткнулся на проблему, состоящую в том, что Winsock сначала накапливает в буфере некоторое количество информации, а затем с ней работает. Где-то читал, что это фишка VB, призванная ускорять работу приложения. Возможно так действительно код работает более оптимально, но если у меня есть необходимость перекачать по винсоку два совершенно разных вида данных, тогда получается не хорошо. Ибо отослав первый блок данных, я начинаю слать второй, который записывается в буфер и расценивается клиентом как продолжение первого. Можно ли как-нибодь указать винсоку, что в определенный момент передача завершена и следующая передача - это не продолжение, а именно следующая передача? Или надо связь закрывать, а потом снова открывать?

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 JBit



Вопросов: 0
Ответов: 8
 Профиль | | #1 Добавлено: 17.03.03 10:25

...но если у меня есть необходимость перекачать по винсоку два совершенно разных вида данных...

То можно использовать два Winsock :)

з.ы. Оба своих файла можешь слать единовременно.

Ответить

Номер ответа: 2
Автор ответа:
 kans



Вопросов: 4
Ответов: 7
 Профиль | | #2 Добавлено: 17.03.03 10:27
Блин! Жалко что эта мысль мне первому в голову не пришла!

Ответить

Номер ответа: 3
Автор ответа:
 Виталиум!



Вопросов: 25
Ответов: 52
 Web-сайт: www.infodoc.h1.ru
 Профиль | | #3
Добавлено: 17.03.03 14:31

я со смешиванием этим борюсь с помощью команды doevents. после ее юзанья все ок. например был такой прикол с моим примером Многоканальный Winsock 2 (скоро будет 3-й) - там массив винсоков, и к ним подключатся клиенты, а когда надо отослать от сервака данные всем клинтам, я делаю это в цикле, но почему-то данные доходили только до последнего подключенного, но когда поставил doevents - все отлично!

Ответить

Номер ответа: 4
Автор ответа:
 V!RU$



ICQ: 132309822 

Вопросов: 24
Ответов: 54
 Web-сайт: cxodnya.narod.ru
 Профиль | | #4
Добавлено: 17.03.03 15:03
Ну или 2 винсока или можно через свойство Index у винсока ....

Ответить

Номер ответа: 5
Автор ответа:
 kans



Вопросов: 4
Ответов: 7
 Профиль | | #5 Добавлено: 17.03.03 16:35

А что нужно с этим свойством Index сделать?

Вы извините, я не сильно грамотен, мож быть, но почитать про винсок негде. Нигде не написано про это свойство че-то.

Ответить

Номер ответа: 6
Автор ответа:
 JBit



Вопросов: 0
Ответов: 8
 Профиль | | #6 Добавлено: 17.03.03 17:12

 Индекс - это не совсем свойство элемента это его, как-бы, порядковый номер в массиве элементов того же типа и с тем же именем.

WinSock(0), WinSock(1) ...

Короче в априори это то о чем я говорил - два Winsock'a 

Ответить

Номер ответа: 7
Автор ответа:
 V!RU$



ICQ: 132309822 

Вопросов: 24
Ответов: 54
 Web-сайт: cxodnya.narod.ru
 Профиль | | #7
Добавлено: 17.03.03 18:06

Ну допустим так:

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

 

Ответить

Номер ответа: 8
Автор ответа:
 Alex3



ICQ: 9481061 

Вопросов: 18
Ответов: 132
 Профиль | | #8 Добавлено: 17.03.03 21:44

Никаких двух винсоков не надо. Просто в начале каждой посылки шли размер передоваемых данных, а при приеме твоя прога таким образом будет понимать, что старых блок данных кончился и начился новый, в начале которого опять таки стоит размер нового блока.

З.Ы. Единственно верный подход, ИМХО.

Ответить

Номер ответа: 9
Автор ответа:
 kans



Вопросов: 4
Ответов: 7
 Профиль | | #9 Добавлено: 18.03.03 08:57
Спасибо ребята.  Я уже сделал с doevents. Очень удобно. :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам