Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите сконструировать клиент-сервер приложение 
V
    Опции темы
drdoom
Дата 2.6.2009, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Здравствуйте знатоки сетевого программирования. Нужно сконуструировать клиент серверное приложение, потому как я не уверен как правильно должна выглядеть его структура.
Постановка задачи:
1 сервер с возможностью соединяться с кучей клиентский приложений одновременно.
я научился пользоваться классами TCPClient и TCPLister. как я понял листенер работает получая входящее соединение и создает клиент для отправки ответа.
так вот получается, что сервер, по собвственно инциативе не может отправить сообщение любому клиенту, только ответить на его сообщение. отсюда несколько вопросов.
1. Как научить сервер посылать в любой момент сообщения клиентам.(Придется ли создавать слушатель в каждом экземпляре приложения клиента?)
2. Как организовать соединение по типу icq?, то есть чтобы на сервере были показаны все клиенты запущенные в данный момент в сети.(Стоит ли заводить таймер в каждом клиенте и каждые несколько секунд отправлять подтверждения о расположения в сети)
3. Как реализовать чат допустим, не приватный а обший?(То есть я так понял клиент посылает сообщения на сервер, а тот рассылает всем остальным это сообщение. Как это сделать? или можно ли сделать правильнее?)
Заранее спасибо за помощь. 
PM MAIL ICQ   Вверх
DVariuS
Дата 2.6.2009, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: 5
Всего: 8



PM MAIL   Вверх
drdoom
Дата 2.6.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



спасиб, чет на кодпроджекте не догодался поисать, я просто хотел сам написать, но наверн так будет даже лучше более менее нормальный код хоть.
PM MAIL ICQ   Вверх
DVariuS
Дата 2.6.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: 5
Всего: 8



drdoom, а я и не призываю использовать готовый код  smile Посмотри как сделано в простых проектах и, при желании, добавь функционала из более сложных.
PM MAIL   Вверх
drdoom
Дата 2.6.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



Чета я посмотрел проекты) не совсем подходят для реализации, не могли подсказать просто структуры всмысле листенеры клиенты как расположить на клиенте и сервере
PM MAIL ICQ   Вверх
drdoom
Дата 2.6.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



да в том то и дело что в саомо простом проекте как то лево сделано
там главная форма запушена как диалог, а форма она не работает, а с диалогом все время орет) думаю эт не лучший варинат, не можешь мне сказать как в принципе по правильному реализуется посылка сообщений с сервера клиентам? с созданием листенера у клиента?

Добавлено через 1 минуту и 3 секунды
Мне  вообще в принципе чат не нада делать, нужно просто чтобы сервер знал кто в сети есть и посылать команды клиентам

PM MAIL ICQ   Вверх
DVariuS
Дата 3.6.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 10.2.2009
Где: Ukraine

Репутация: 5
Всего: 8



Цитата(drdoom @  2.6.2009,  12:08 Найти цитируемый пост)
да в том то и дело что в саомо простом проекте как то лево сделано
там главная форма запушена как диалог, а форма она не работает, а с диалогом все время орет) думаю эт не лучший варинат, не можешь мне сказать как в принципе по правильному реализуется посылка сообщений с сервера клиентам? с созданием листенера у клиента?

Все там нормально сделано, единственное, следует закомментировать следующую строку кода:
Код

txtLog.Text += msgToSend.strMessage + "\r\n";

т.к. в ней попытка обращения к элементу формы из другого потока - из-за этого постоянно exception вылетает.


Цитата(drdoom @  2.6.2009,  12:08 Найти цитируемый пост)
Мне  вообще в принципе чат не нада делать, нужно просто чтобы сервер знал кто в сети есть и посылать команды клиентам

Задачи аналогичны. Сервак слушает порт - ждет подключений клиентов, при удачном подключении заносит клиента в список активных. Периодически сервер посылает клиентам контрольный пакет и ждет ответ, чтобы убедиться, что клиент доступен. Клиент, в свою очередь, тоже слушает порт и ждет данных от сервера.
По поводу конкретной реализации - в тех примерах, ссылки на которые я привел, есть все необходимое   smile 
PM MAIL   Вверх
drdoom
Дата 4.6.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.1.2008
Где: Саратов

Репутация: 1
Всего: 1



ПАсиб я уже написал, не знал что можно просто сохранить клиент сокета и обратно данные ему послать в любоое время
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.