Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 | 2 | 3 |

 

  Вопрос: Исползование 2 Winsock-а в один порт. Добавлено: 05.03.06 21:20  

Автор вопроса:  Programmer
Веб бровзер как-то может через
один порт скачивать одновременно
много файлов. То есть одновременно
происходит много коннектов через порт 80.
В моей проге так не выходит. Порт занят.
Как мне коннектитца в один порт одновременно
разными программами. Например я захочу
скачать один файл, но он большой. Я хочу
одновременно скачать и второй файл, пока качается третий.

Ответить

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

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



Вопросов: 71
Ответов: 246
 Профиль | | #1 Добавлено: 05.03.06 21:36
API...

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 06.03.06 10:40
Ниасилил патамушта многа букоф

Ответить

Номер ответа: 3
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #3 Добавлено: 06.03.06 13:01
Массив винсоков

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #4 Добавлено: 06.03.06 17:57
А ты качай один, но по максимуму.
И ваще, FlashGet'а лучше нет!!! :)

Ответить

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



Вопросов: 71
Ответов: 246
 Профиль | | #5 Добавлено: 06.03.06 18:40
Всё равно не получается - уже
пробовал массив.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #6 Добавлено: 06.03.06 18:49
Про флажок ReUseAddress слышал? Тогда в АПИ дорога.
Иначе - переходи на другой контрол. Я в свое время использовал DSSocket. Там фишек много было реализовано, кроме того, на Сях. Мне давно не в лом лишние библы таскать.
ЗЫ Учи WinPCap :)

Ответить

Номер ответа: 7
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #7 Добавлено: 07.03.06 15:15
скинь мне попочте на vlad_t_kiev@mail.ru
свой DSSocket. Пли-и-и-з!

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 07.03.06 15:40
Чего это он мой? Поищи в гугле, у меня под рукой нет.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 07.03.06 16:17
ЗЫ
В ХР есть полезная апишка - DisconnectEx. В принципе, можно дисконнектить сокет, через setsockopt выставить флаг SO_REUSEADDR по свойству SocketHandle и переконнектиться. Но это ХР...

Ответить

Номер ответа: 10
Автор ответа:
 Programmer



Вопросов: 71
Ответов: 246
 Профиль | | #10 Добавлено: 11.03.06 23:38
Какие именно API. Подскажи!

Ответить

Номер ответа: 11
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #11 Добавлено: 13.03.06 10:40
Гыыы...
Открываешь API-Guide, раздел Winsock. Либо MSDN, с ним чуть сложнее - придется воспользоваться поиском :)
А вообще, кажись у DaSharm'а был исходник сокета на АПИ. Не фонтан, конечно, но тебе - в самый раз будет. Не помню, реализовано ли там SO_REUSEADDR свойством, но если нет - сам добавишь. Поищи его по форуму.
Ранняя версия называлась как-то вроде Tyaga, потом вышло че-то поновее. В поиск тебе дорога.

Ответить

Номер ответа: 12
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #12 Добавлено: 23.03.06 11:58
Мля , массив винсоков

Ответить

Номер ответа: 13
Автор ответа:
 AsHeS



ICQ: 229759992 

Вопросов: 14
Ответов: 93
 Профиль | | #13 Добавлено: 23.03.06 11:59
Токо они тама открываются через Load

Ответить

Номер ответа: 14
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #14 Добавлено: 23.03.06 12:13
Ты это к чему напостил?

Ответить

Номер ответа: 15
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #15 Добавлено: 23.03.06 12:26
Вот отрывок статьи про Winsock


Обработка более чем одного запроса на установление соединения.

Приложение-сервер, которое мы создавали сначала может обработать только один запрос на соединение. Тем не менее, существует возможность обработать несколько запросов на соединение, используя тот же самый управляющий элемент как один из массива управляющих элементов. В этом случае, необязательно закрывать соединение - просто создайте новый вариант управляющего элемента (использовав его свойство Index) и вызовите метод Accept для этого нового варианта управляющего элемента.

В приведенном ниже тексте программы, свойству Index, размещенного на форме Winsock-компонента sckServer, присваивается значение 0, таким образом, управляющий элемент становится частью массива управляющих элементов. В разделе Declarations описана локальная переменная intMax. Когда для формы происходит событие Load, переменной intMax присваивается значение 0 и свойству LocalPort первого элемента массива управляющих элементов присваивается значение 1001. Только после того, как вызывается метод Listen этого управляющего элемента, он начинает слушать указанный порт. Когда поступает новый запрос на соединение, осуществляется проверка значения Index и равно ли оно 0 (значение элемента, который слушает порт). Таким образом, элемент который слушает порт, будет приращивать переменную intMax и использовать значение этой переменной для создания нового элемента массива. Этот новый элемент будет использоваться для обработки запроса на соединение.
Private intMax As Long
Private Sub Form_Load()
intMax = 0
sckServer(0).LocalPort = 1001
sckServer(0).Listen
End Sub

Private Sub sckServer_ConnectionRequest (Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckServer(intMax)
sckServer(intMax).LocalPort = 0
sckServer(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub

Ответить

Страница: 1 | 2 | 3 |

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



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