Страница: 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 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