Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

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

Автор вопроса:  Programmer

Ответить

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

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #16 Добавлено: 23.03.06 12:54
Не совсем то. Читаем

Как мне коннектитца в один порт одновременно
разными программами.

Смысл в том чтобы посадить два полноценных винсока на один порт.

Ответить

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



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #17 Добавлено: 23.03.06 13:06
Думаю при
коннектитца
в один и тот же порт одного и того же экземпляра Winsock'а вряд ли возможно. Но в моем ответе вроде порт остается неизменным, для решения задачи должно подойти.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #18 Добавлено: 23.03.06 13:24
Может да, а может и нет...
Скажем, два своих приложения ты так разрулить не можешь. Про UDP вообще молчу. А про коннекты и ежу понятно.

Ответить

Номер ответа: 19
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #19
Добавлено: 23.03.06 14:34
Mihalыch дело говорит. Если по большому счёту о Winsock'ах говорить, как о сокетах Windows, а не о контроле от Microsoft, то сервер не может одним сокетом поиметь соединение с несколькими сокетами клиентов :) На web-сервере только один (!) сокет привязан (bind) к порту 80, а когда он принимает соединение (accept), эта api-функция создает (и возвращает) новый сокет, который и принимает соединение от клиента. При этом вновь созданный сокет никоим образом не привязан к 80-му порту, разве что он был создан при участии первого сокета. Если по каким-то причинам в программе вы не успеваете принимать соединения клиентов, образуется что-то типа очереди на подключении. Для winsock v1 эта очередь не больше 5 клиентов, для winsock v2 можно гораздо больше. Всё выше сказанное касается windows sockets api.

Ответить

Номер ответа: 20
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #20
Добавлено: 23.03.06 14:38
Есть в разделе примеры две версии сервера многоканального винсока, обе я когда-то дорабатывал под свои нужды, советую скачать и основательно разобраться. Там то, что сказал Mihalыch, на примере Winsock Control'ов.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #21 Добавлено: 23.03.06 14:59
Все это здорово, но если порт 80 ЗАНЯТ - хоть 800-канальный винсок у тебя будет - на Winsock Control он работать не будет. Вот в чем фишка...

Ответить

Номер ответа: 22
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #22
Добавлено: 23.03.06 15:17
Чем 80-й порт может быть занят? Разве что очередью ожидающих на подключение. Если он занят ты никаким макаром ни байта с сервера не получишь. Winsock-control тут ни при чем! Если разработчик сервера по 80-му данные пересылает (и поэтому он занят), то он не разработчик, а.. не умный человек.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #23 Добавлено: 23.03.06 15:25

Чем 80-й порт может быть занят?

80-й порт - частный случай.

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

Про то и речь что это не есть факт.
А порт может быть, скажем 4662 или 8132. На вещи надо смотреть ширше :)

Ответить

Номер ответа: 24
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #24
Добавлено: 23.03.06 15:45
LoL, знаешь, мне кажется я по существу. А разбираем мы не общий случай, а частный, в данном случае случай programmer'a. А про XP-это частный случай и я не знаю, что ты этим хотел сказать. Web-server - это как доступный для понимания ПРИМЕР, а не частный случай. Автор топика пишет:
Веб бровзер как-то может через
один порт скачивать одновременно
много файлов. То есть одновременно
происходит много коннектов через порт 80.
В моей проге так не выходит. Порт занят.

То есть здесь речь о том, что человеку надо чтобы коннектиться к серверу можно было как и в интернете - одновременно идёт передача данных с НЕСКОЛЬКИХ портов, но ни один из них реально не является портом, номер которого прослушивается. Просто в прослушивающий порт поступают запросы на соединение, а сами соединения проходят не с ним, а с другими сокетами на других портах. Автору топика надо сделать так, чтобы прослушивающий порт никогда не был занят "делами", кроме как принимать очередь из запросов на соединение. В чём конкретно ты со мной не согласен, LoL?

Ответить

Номер ответа: 25
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #25
Добавлено: 23.03.06 15:51
но ни один из них реально не является портом, номер которого прослушивается.


Ну я сказал :) Что я имел ввиду, вы поняли: ни один из них не является тем портом, который прослушивали.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #26 Добавлено: 23.03.06 15:55
Ну я же уже писал - пост N16.
Я с тобой согласен - для приведенной аффтаром ситуации этот медод приемлем. Проблемы возникнут при реализации собсно сабжа. Название темы вверху.
Ну а если имеется одна лишь программа, типа браузера - тут и спорить не о чем, только так и никак иначе :)

Ответить

Номер ответа: 27
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #27
Добавлено: 23.03.06 16:23
то, что в сабже написано, реалировать можно, но это через задницу и никто так не делает. тогда это будет попеременное пользование одним портом несколькими программами.. по таймауту, что-ли :))))) проги-клиенты будут получать 99% отказов, снова долбиться на порт, после чего на короткий интервал времени им дадут прокачать все или часть(!) того, что надо.

Ответить

Номер ответа: 28
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #28
Добавлено: 23.03.06 16:26
нужна многоканальная закачка - не жалейте открытых сокетов. это единственный путь - других нет.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #29 Добавлено: 23.03.06 16:45
Одна прога вполне может использоваться для отсылки данных, другая - для приема. Если протокол UDP - проги могут просто слушать порт.
Вариантов тут много, и не сказать что никто так не делает ;)

Ответить

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



Вопросов: 71
Ответов: 246
 Профиль | | #30 Добавлено: 23.03.06 19:45
Люди, вы не так поняли!
Я имею в виду, что у меня клиент, а не сэрвер. С сэрвером проблем никаких. Bind, Accert, Listen - это все я знаю. Меня интересует:
У меня КЛИЕНТ, а не сэрвер!
Я хочу Connect, а не Listen!!!
Я хочу несколькими потоками одноврименно соединятся с сэрвером и качать.

Ответить

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

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



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