Вопрос: Исползование 2 Winsock-а в один порт. | Добавлено: 05.03.06 21:20 |
Автор вопроса: ![]() |
Веб бровзер как-то может через
один порт скачивать одновременно много файлов. То есть одновременно происходит много коннектов через порт 80. В моей проге так не выходит. Порт занят. Как мне коннектитца в один порт одновременно разными программами. Например я захочу скачать один файл, но он большой. Я хочу одновременно скачать и второй файл, пока качается третий. |
Ответы | Всего ответов: 43 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 246 |
Профиль | Цитата | #1 | Добавлено: 05.03.06 21:36 |
API... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #2 | Добавлено: 06.03.06 10:40 |
Ниасилил патамушта многа букоф |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #3 | Добавлено: 06.03.06 13:01 |
Массив винсоков |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #4 | Добавлено: 06.03.06 17:57 |
А ты качай один, но по максимуму.
И ваще, FlashGet'а лучше нет!!! ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 246 |
Профиль | Цитата | #5 | Добавлено: 06.03.06 18:40 |
Всё равно не получается - уже
пробовал массив. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #6 | Добавлено: 06.03.06 18:49 |
Про флажок ReUseAddress слышал? Тогда в АПИ дорога.
Иначе - переходи на другой контрол. Я в свое время использовал DSSocket. Там фишек много было реализовано, кроме того, на Сях. Мне давно не в лом лишние библы таскать. ЗЫ Учи WinPCap ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 246 |
Профиль | Цитата | #7 | Добавлено: 07.03.06 15:15 |
скинь мне попочте на vlad_t_kiev@mail.ru
свой DSSocket. Пли-и-и-з! |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #8 | Добавлено: 07.03.06 15:40 |
Чего это он мой? Поищи в гугле, у меня под рукой нет. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #9 | Добавлено: 07.03.06 16:17 |
ЗЫ
В ХР есть полезная апишка - DisconnectEx. В принципе, можно дисконнектить сокет, через setsockopt выставить флаг SO_REUSEADDR по свойству SocketHandle и переконнектиться. Но это ХР... |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 246 |
Профиль | Цитата | #10 | Добавлено: 11.03.06 23:38 |
Какие именно API. Подскажи! |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #11 | Добавлено: 13.03.06 10:40 |
Гыыы...
Открываешь API-Guide, раздел Winsock. Либо MSDN, с ним чуть сложнее - придется воспользоваться поиском ![]() А вообще, кажись у DaSharm'а был исходник сокета на АПИ. Не фонтан, конечно, но тебе - в самый раз будет. Не помню, реализовано ли там SO_REUSEADDR свойством, но если нет - сам добавишь. Поищи его по форуму. Ранняя версия называлась как-то вроде Tyaga, потом вышло че-то поновее. В поиск тебе дорога. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #12 | Добавлено: 23.03.06 11:58 |
Мля , массив винсоков |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 229759992 Вопросов: 14 Ответов: 93 |
Профиль | Цитата | #13 | Добавлено: 23.03.06 11:59 |
Токо они тама открываются через Load |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #14 | Добавлено: 23.03.06 12:13 |
Ты это к чему напостил? |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() 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 |
|