Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
1

Как красиво организовать клиент-сервер

01.06.2012, 03:16. Просмотров 1187. Ответов 4
Метки нет (Все метки)

Здравствуйте! Пишу приложение: сервер бесконечно ждет подключения нового клиента, при подключении они начинают слать друг-другу данные. Сервер - безоконное приложение, с клиентом общается по нескольким портам, для каждого из которых хочу выделить по отдельному потоку.
Как сделать, чтоб: 1) одновременно мог быть подключен только один клиент, но при отключении текущего клиента, мог подключиться другой?
2) если клиент исчез (например, закрыли приложение или отключили питание компьютера) сервер начинал ожидать нового.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2012, 03:16
Ответы с готовыми решениями:

Клиент-сервер. Можно ли организовать реализацию как на WarcraftIII
Добрый день. Сейчас занимаюсь крупным проектом и обходился всегда без этого. Web + Парсинг всегда...

Как организовать клиент-сервер, а так же передачу и обработку XML
В общем вопрос такой, я не знаю как делать обращение к серверу xml, что-бы я мог отправить и...

Организовать взаимодействие типа клиент-сервер
Организовать взаимодействие типа клиент-сервер. Клиент делает запрос серверу на выполнение...

Организовать взаимодействие типа клиент - сервер
Организовать взаимодействие типа клиент - сервер.Клиенты подключается к первому серверу, передают...

Клиент-сервер: Как определить, что клиент отключился?
Привет. Есть клиент и сервер, при подключении клиента, на сервере создается класс, который содержит...

4
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
02.06.2012, 04:26  [ТС] 2
Неужели никто не может поделиться идеями?
0
sasha0192
51 / 51 / 7
Регистрация: 23.01.2012
Сообщений: 449
02.06.2012, 13:08 3
2) Клиент после подключения к серверу посылает данные с промежутком, сервер читает и понимает, что клиент онлайн.

Добавлено через 3 минуты
Первое не совсем понял... нужно чтобы больше 2х клиентов одновременно не могло подключится?

Добавлено через 3 минуты
или наоборот, при подключении первого клиента мог бы подключаться и второй?
1
ЦеЗарЬ
17 / 17 / 1
Регистрация: 16.09.2010
Сообщений: 100
02.06.2012, 14:54 4
Цитата Сообщение от body90 Посмотреть сообщение
1) одновременно мог быть подключен только один клиент, но при отключении текущего клиента, мог подключиться другой?
на серверном приложении создаешь два класса Server и ClientConnection. В классе Server заведи переменную CanConnect типа bool, которая true когда подключенного клиента нет и false когда есть. В функции где Server в бесконечном цикле принимает клиентов, просто перед тем как установить соединение, проверяй можно ли - CanConnect.

Цитата Сообщение от body90 Посмотреть сообщение
2) если клиент исчез (например, закрыли приложение или отключили питание компьютера) сервер начинал ожидать нового.
перед закрытием клиента в событии Form_Closing нужно отправлять серверу сообщение о желании отключения.
1
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
02.06.2012, 19:56  [ТС] 5
Попробую пояснить по другому. Всё работает через класс Socket. Вот, например, я клиентом подключаюсь к серверу. Пока я работаю с сервером, другие клиенты не должны иметь возможность подключиться (я так понимаю, что для этого достаточно сделать Socket.Listen(1); ). Проблема в том, что если я, например, выйду из приложения через диспетчер задач (то есть нет возможности послать данные, что я завершаю сеанс и сервер может опять начинать ждать подключения), то сервер так и будет ждать передачи данных от моего клиента не зная, что он отключился, а остальные клиенты (или опять же я), не смогут подключиться.
Как выйти из этой ситуации?

Добавлено через 1 минуту
sasha0192 и ЦеЗарЬ, ответил сразу на все Ваши вопросы.
0
02.06.2012, 19:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2012, 19:56

Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
Пишу клиент-серверное приложение. Использую TCPListener и TCPClient. Вопрос: как определить что...

Сервер на PHP + клиент на C#. Организовать процесс обмена данными клиента через PHP на сервере
Всем привет. Подскажите, как реализовать. Сейчас есть: сервер и клиент на C#. На сервере есть...

Как организовать клиент-серверное приложение
Делаю лабораторную: необходимо написать три приложения на с#, два сервера (ServerInput и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.