![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| drdoom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 29.1.2008 Где: Саратов Репутация: 1 Всего: 1 |
Здравствуйте знатоки сетевого программирования. Нужно сконуструировать клиент серверное приложение, потому как я не уверен как правильно должна выглядеть его структура.
Постановка задачи: 1 сервер с возможностью соединяться с кучей клиентский приложений одновременно. я научился пользоваться классами TCPClient и TCPLister. как я понял листенер работает получая входящее соединение и создает клиент для отправки ответа. так вот получается, что сервер, по собвственно инциативе не может отправить сообщение любому клиенту, только ответить на его сообщение. отсюда несколько вопросов. 1. Как научить сервер посылать в любой момент сообщения клиентам.(Придется ли создавать слушатель в каждом экземпляре приложения клиента?) 2. Как организовать соединение по типу icq?, то есть чтобы на сервере были показаны все клиенты запущенные в данный момент в сети.(Стоит ли заводить таймер в каждом клиенте и каждые несколько секунд отправлять подтверждения о расположения в сети) 3. Как реализовать чат допустим, не приватный а обший?(То есть я так понял клиент посылает сообщения на сервер, а тот рассылает всем остальным это сообщение. Как это сделать? или можно ли сделать правильнее?) Заранее спасибо за помощь. |
|||
|
||||
| DVariuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: 5 Всего: 8 |
||||
|
||||
| drdoom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 29.1.2008 Где: Саратов Репутация: 1 Всего: 1 |
спасиб, чет на кодпроджекте не догодался поисать, я просто хотел сам написать, но наверн так будет даже лучше более менее нормальный код хоть.
|
|||
|
||||
| DVariuS |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: 5 Всего: 8 |
drdoom, а я и не призываю использовать готовый код
|
|||
|
||||
| drdoom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 29.1.2008 Где: Саратов Репутация: 1 Всего: 1 |
Чета я посмотрел проекты) не совсем подходят для реализации, не могли подсказать просто структуры всмысле листенеры клиенты как расположить на клиенте и сервере
|
|||
|
||||
| drdoom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 29.1.2008 Где: Саратов Репутация: 1 Всего: 1 |
да в том то и дело что в саомо простом проекте как то лево сделано
там главная форма запушена как диалог, а форма она не работает, а с диалогом все время орет) думаю эт не лучший варинат, не можешь мне сказать как в принципе по правильному реализуется посылка сообщений с сервера клиентам? с созданием листенера у клиента? Добавлено через 1 минуту и 3 секунды Мне вообще в принципе чат не нада делать, нужно просто чтобы сервер знал кто в сети есть и посылать команды клиентам |
|||
|
||||
| DVariuS |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 10.2.2009 Где: Ukraine Репутация: 5 Всего: 8 |
Все там нормально сделано, единственное, следует закомментировать следующую строку кода:
т.к. в ней попытка обращения к элементу формы из другого потока - из-за этого постоянно exception вылетает.
Задачи аналогичны. Сервак слушает порт - ждет подключений клиентов, при удачном подключении заносит клиента в список активных. Периодически сервер посылает клиентам контрольный пакет и ждет ответ, чтобы убедиться, что клиент доступен. Клиент, в свою очередь, тоже слушает порт и ждет данных от сервера. По поводу конкретной реализации - в тех примерах, ссылки на которые я привел, есть все необходимое |
||||
|
|||||
| drdoom |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 29.1.2008 Где: Саратов Репутация: 1 Всего: 1 |
ПАсиб я уже написал, не знал что можно просто сохранить клиент сокета и обратно данные ему послать в любоое время
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |