|
|
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Стоит задача создания сокет-сервера для одновременно работающих клиентов.Одновременно 10-100 я думаю соеденений. В java новичок.В принципе читал что надо создать серверный сокет на порт N например,потом при входящем соеденении создавать новый серверный сокет с новым портом,и передавать информацию о нем клиенту.И тот уже работает с новым портом сервера. Все серверные сокеты создаются в отдельном потоке.Это вроде понятно. Но как потом удалять потоки,которые не соеденены с клиентами,типа отработали и стоят свободными.И вообще как сдедить за ними..примеры про сокеты я встречал лишь простые,типа один клиент - один порт сервера. Подскажите,please. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 14:22 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Олег > Стоит задача создания сокет-сервера для одновременно работающих > клиентов.Одновременно 10-100 я думаю соеденений. > В java новичок.В принципе читал что надо создать серверный сокет > на порт N например,потом при входящем соеденении создавать новый > серверный сокет с новым портом,и передавать информацию о нем > клиенту. И тот уже работает с новым портом сервера. где такое написано? серверный сокет создается на одном порту. он нужен всего один. Олег > Все серверные сокеты создаются в отдельном потоке.Это вроде понятно. > Но как потом удалять потоки,которые не соеденены с клиентами,типа > отработали и стоят свободными.И вообще как сдедить за ними..примеры > про сокеты я встречал лишь простые,типа один клиент - один порт > сервера. > Подскажите,please. отслеживать отсоединение можно с помощью исключений. при разрыве соединения произойдет исключение IOException вроде ----------------------------------- The Bat + My Gate Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 14:56 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
для того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:09 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup. Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:14 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Кувалдин Роман wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup. Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать. я не слышал, но может быть это из-за методов stop, resume, suspend они на него гнали? Так они depricated давно уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:19 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Все верно. Как правило, сервер имеет прослушивающий сокет на общеизвестном порту. Задача этого сокета - только принимать поступающие запросы на соединение. Как только такой запрос поступил от удаленного клиента на этот прослушивающий сокет, сервер создает новый сокет(через который и будет идти обмен данными) с новым портом (порт назначается автоматом) для работы с этим клиентом в отдельном потоке. Новый сокет создается для того, что сервер мог обслуживать одновременно несколько клиентов и при это слушать сеть на наличие поступающих запросовна соединение. Когда клиент завершиет работу с сервером он закрывает соединение, серверный поток видит это и завершается. Вместе с завершением такого потока закрывается и связанный с ним сокет. Порт этого сокета освобождается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:27 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
wessen Кувалдин Роман wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup. Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать. я не слышал, но может быть это из-за методов stop, resume, suspend они на него гнали? Так они depricated давно уже. Какая практическая польза от группировки тредов? Чем пачка из независимых тредов хуже? Слышал, правда, лестные отзывы про пул потоков из java.concurrent в java5, но это совсем другой пул потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:42 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Какая практическая польза от группировки тредов? Чем пачка из независимых тредов хуже? Есть допустим сервер, он плодит поток для каждого клиента, каждый клиент передает важную информацию, затем тебе нужно выключить сервер, просто так обрывать соединения нельзя, поэтому вызываем какой нить метод наподобе List:MyThreadGroup#getThreads() и у каждого потока вызываем метод interrupt(). А как иначе можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 15:53 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
wessen Какая практическая польза от группировки тредов? Чем пачка из независимых тредов хуже? Есть допустим сервер, он плодит поток для каждого клиента, каждый клиент передает важную информацию, затем тебе нужно выключить сервер, просто так обрывать соединения нельзя, поэтому вызываем какой нить метод наподобе List:MyThreadGroup#getThreads() и у каждого потока вызываем метод interrupt(). А как иначе можно сделать? Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся", потом проходим все треды и синхронно возле каждого ждем, пока он не закончит работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:02 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся"... При чем тут вообще способы "гасить сервер"?? потом проходим все треды .... Вопрос в том, откуда вы "все" эти треды возьмете? Код: plaintext 1. 2. 3. 4. Потоков ClientThread может быть сотни. Покажите, как вы все эти потоки "проходить" будете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:24 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
wessen Сергей Ильич Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся"... При чем тут вообще способы "гасить сервер"?? Притом! В качестве примера зачем нужен тредпул, Вами был приведен аргумент что в тредпуле можно сразу interrupт'нуть все треды при завершении работы. Я привел, как это сделать правильно. wessen потом проходим все треды .... Вопрос в том, откуда вы "все" эти треды возьмете? Оттуда! Треды надо запускать один раз при старте а потом их надо ре-юзать. Чтобы их всех обойти надо наверно создать коллекцию. wessen Код: plaintext 1. 2. 3. 4. Если их сотни, то это говнистый подход. Для десяти клиентов практично сделать тредпул, для сотни более разумно сделать два потока - один будет обходить все сокеты и асинхронно выфетчивать из них запросы и пихать назад ответы, другой должен подхватывать готовые запросы и исполнять их, поскольку из этих сотен клиентов процентов 95 в произвольный момент времени будут чесать репу, изучая уже полученные данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 16:47 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Сергей Ильич ...Чтобы их всех обойти надо наверно создать коллекцию. вот и я про то же. Можно создать коллекцию, а можно использовать уже предназначенный для этого класс, например ThreadGroup и не изобретать велосипед. Я в свое время использовал класс, аналог стандартному ThreadGroup, из какой то сторонней библиотеки т.к. методов обычной коллекции недостаточно, например getActiveCount() и т.п. Чего Вы придрались к моему примеру, я не понимаю, я конечно оценил ваши знания в написании клиент серверных приложений, но речь сейчас не об этом. Просто предсавте себе приложение, в котором сотни потоков и их нельзя заменить двумя. Вам наверное для хранения этих потоков, было достаточно коллекции, а мне нет и я использовал аналог ThreadGroup, который по сути является коллекцией, заточенной для хранения потоков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2005, 17:16 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
а вот по тематике создания сокет-сервера на java какую технологию посоветуете (я слышал что java инструментария много) и какую к нему книгу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2006, 19:02 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. В течении последней недели решаю подобную задачу, в Java тоже новичок. В качестве точки отсчета использовал статью: http://www.javable.com/javaworld/03_00/04/index.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2006, 13:06 |
|
||
|
Принцип создания сокет сервера
|
|||
|---|---|---|---|
|
#18+
SanyKЗдравствуйте. В течении последней недели решаю подобную задачу, в Java тоже новичок. В качестве точки отсчета использовал статью: http://www.javable.com/javaworld/03_00/04/index.pdf почему то в этой статье вместо русских букв знаки # :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2006, 13:10 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33457605&tid=2150103]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
204ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 573ms |

| 0 / 0 |
