powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Принцип создания сокет сервера
16 сообщений из 16, страница 1 из 1
Принцип создания сокет сервера
    #33457521
Олег Дж
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит задача создания сокет-сервера для одновременно работающих клиентов.Одновременно 10-100 я думаю соеденений.
В java новичок.В принципе читал что надо создать серверный сокет на порт N например,потом при входящем соеденении создавать новый серверный сокет с новым портом,и передавать информацию о нем клиенту.И тот уже работает с новым портом сервера.
Все серверные сокеты создаются в отдельном потоке.Это вроде понятно.
Но как потом удалять потоки,которые не соеденены с клиентами,типа отработали и стоят свободными.И вообще как сдедить за ними..примеры про сокеты я встречал лишь простые,типа один клиент - один порт сервера.
Подскажите,please.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457605
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Олег
> Стоит задача создания сокет-сервера для одновременно работающих
> клиентов.Одновременно 10-100 я думаю соеденений.
> В java новичок.В принципе читал что надо создать серверный сокет
> на порт N например,потом при входящем соеденении создавать новый
> серверный сокет с новым портом,и передавать информацию о нем
> клиенту. И тот уже работает с новым портом сервера.

где такое написано?

серверный сокет создается на одном порту. он нужен всего один.

Олег
> Все серверные сокеты создаются в отдельном потоке.Это вроде понятно.
> Но как потом удалять потоки,которые не соеденены с клиентами,типа
> отработали и стоят свободными.И вообще как сдедить за ними..примеры
> про сокеты я встречал лишь простые,типа один клиент - один порт
> сервера.
> Подскажите,please.


отслеживать отсоединение можно с помощью исключений. при разрыве
соединения произойдет исключение IOException вроде

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457644
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457659
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup.

Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457672
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кувалдин Роман wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup.

Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать.

я не слышал, но может быть это из-за методов stop, resume, suspend они на него гнали? Так они depricated давно уже.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457692
AndreySerj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все верно.
Как правило, сервер имеет прослушивающий сокет на общеизвестном порту. Задача этого сокета - только принимать поступающие запросы на соединение.
Как только такой запрос поступил от удаленного клиента на этот прослушивающий сокет, сервер создает новый сокет(через который и будет идти обмен данными) с новым портом (порт назначается автоматом) для работы с этим клиентом в отдельном потоке.
Новый сокет создается для того, что сервер мог обслуживать одновременно несколько клиентов и при это слушать сеть на наличие поступающих запросовна соединение.
Когда клиент завершиет работу с сервером он закрывает соединение, серверный поток видит это и завершается. Вместе с завершением такого потока закрывается и связанный с ним сокет. Порт этого сокета освобождается.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457737
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen Кувалдин Роман wessenдля того, чтобы группировать потоки и управлять ими, можно использовать класс ThreadGroup.

Я про него много плохого слышал у Хорстмана и Эккеля. Они не советуют его использовать.

я не слышал, но может быть это из-за методов stop, resume, suspend они на него гнали? Так они depricated давно уже.
Какая практическая польза от группировки тредов?
Чем пачка из независимых тредов хуже? Слышал, правда, лестные отзывы про пул потоков из java.concurrent в java5, но это совсем другой пул потоков.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457763
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая практическая польза от группировки тредов?
Чем пачка из независимых тредов хуже?

Есть допустим сервер, он плодит поток для каждого клиента, каждый клиент передает важную информацию, затем тебе нужно выключить сервер, просто так обрывать соединения нельзя, поэтому вызываем какой нить метод наподобе List:MyThreadGroup#getThreads() и у каждого потока вызываем метод interrupt(). А как иначе можно сделать?
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457782
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen Какая практическая польза от группировки тредов?
Чем пачка из независимых тредов хуже?

Есть допустим сервер, он плодит поток для каждого клиента, каждый клиент передает важную информацию, затем тебе нужно выключить сервер, просто так обрывать соединения нельзя, поэтому вызываем какой нить метод наподобе List:MyThreadGroup#getThreads() и у каждого потока вызываем метод interrupt(). А как иначе можно сделать?
Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся", потом проходим все треды и синхронно возле каждого ждем, пока он не закончит работу.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457837
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич
Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся"...

При чем тут вообще способы "гасить сервер"??

потом проходим все треды ....

Вопрос в том, откуда вы "все" эти треды возьмете?

Код: plaintext
1.
2.
3.
4.
...
ClientSocket clientSock = ServerSocket.accept();
 new  ClientThread( clientSock ).start();
...

Потоков ClientThread может быть сотни. Покажите, как вы все эти потоки "проходить" будете?
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457908
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wessen Сергей Ильич
Ну, нас учили сервер гасить в две фазы - сначала каждому треду ставим флажок "сворачивайся"...
При чем тут вообще способы "гасить сервер"??

Притом! В качестве примера зачем нужен тредпул, Вами был приведен аргумент что в тредпуле можно сразу interrupт'нуть все треды при завершении работы. Я привел, как это сделать правильно.

wessen
потом проходим все треды ....
Вопрос в том, откуда вы "все" эти треды возьмете?

Оттуда! Треды надо запускать один раз при старте а потом их надо ре-юзать. Чтобы их всех обойти надо наверно создать коллекцию.

wessen
Код: plaintext
1.
2.
3.
4.
...
ClientSocket clientSock = ServerSocket.accept();
 new  ClientThread( clientSock ).start();
...
Потоков ClientThread может быть сотни. Покажите, как вы все эти потоки "проходить" будете?
Если их сотни, то это говнистый подход. Для десяти клиентов практично сделать тредпул, для сотни более разумно сделать два потока - один будет обходить все сокеты и асинхронно выфетчивать из них запросы и пихать назад ответы, другой должен подхватывать готовые запросы и исполнять их, поскольку из этих сотен клиентов процентов 95 в произвольный момент времени будут чесать репу, изучая уже полученные данные.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33457997
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Ильич ...Чтобы их всех обойти надо наверно создать коллекцию.
вот и я про то же. Можно создать коллекцию, а можно использовать уже предназначенный для этого класс, например ThreadGroup и не изобретать велосипед. Я в свое время использовал класс, аналог стандартному ThreadGroup, из какой то сторонней библиотеки т.к. методов обычной коллекции недостаточно, например getActiveCount() и т.п. Чего Вы придрались к моему примеру, я не понимаю, я конечно оценил ваши знания в написании клиент серверных приложений, но речь сейчас не об этом. Просто предсавте себе приложение, в котором сотни потоков и их нельзя заменить двумя. Вам наверное для хранения этих потоков, было достаточно коллекции, а мне нет и я использовал аналог ThreadGroup, который по сути является коллекцией, заточенной для хранения потоков.
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33562988
wpww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а вот по тематике создания сокет-сервера на java какую технологию посоветуете (я слышал что java инструментария много) и какую к нему книгу?
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33563668
SanyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

В течении последней недели решаю подобную задачу, в Java тоже новичок.

В качестве точки отсчета использовал статью:
http://www.javable.com/javaworld/03_00/04/index.pdf
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33563678
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanyKЗдравствуйте.

В течении последней недели решаю подобную задачу, в Java тоже новичок.

В качестве точки отсчета использовал статью:
http://www.javable.com/javaworld/03_00/04/index.pdf

почему то в этой статье вместо русских букв знаки # :(
...
Рейтинг: 0 / 0
Принцип создания сокет сервера
    #33563684
SanyK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, ошибся в ссылке

Правильная ссылка на статью: http://www.javable.com/columns/serv_side/workshop/18/ch1/index.pdf
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Принцип создания сокет сервера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]