23 / 23 / 5
Регистрация: 05.03.2009
Сообщений: 181

Создание севрера обмена сообщениями

21.02.2012, 21:41. Показов 1935. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте
Хочу создать сервер для обмена текстовыми сообщениями, нарыл в msdn код сервера и клиента. Но они работают в разные стороны, то есть один только отправляет, а второй только принимает нужно сделать не большой аналог текстового клиента на WinForms.
Проблема вот в том, что в консольной утилите сервер работает, а в WinForms сервер "зависает"...Хотя код один и тот же используется из msdn:

Для WinForms:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private void btnStartServer_Click(object sender, EventArgs e)
        {
            const int listenPort = 11000;
 
            bool done = false;
 
            UdpClient listener = new UdpClient(listenPort);
            IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
 
            try
            {
                while (!done)
                {
                    tbGetMessage.Text = "Waiting for broadcast";
                    byte[] bytes = listener.Receive(ref groupEP);
                    
                    tbGetMessage.Text = string.Format("Received broadcast from {0} :\n {1}\n",
                        groupEP.ToString(),
                        Encoding.ASCII.GetString(bytes, 0, bytes.Length));
                     
                }
 
            }
            catch (Exception exp)
            {
 
            }
            finally
            {
                listener.Close();
            }
        }
Для консоли:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
private const int listenPort = 11000;
 
    private static void StartListener()
    {
        bool done = false;
 
        UdpClient listener = new UdpClient(listenPort);
        IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
 
        try
        {
            while (!done)
            {
                Console.WriteLine("Waiting for broadcast");
                byte[] bytes = listener.Receive(ref groupEP);
 
                Console.WriteLine("Received broadcast from {0} :\n {1}\n",
                    groupEP.ToString(),
                    Encoding.ASCII.GetString(bytes, 0, bytes.Length));
            }
 
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
        finally
        {
            listener.Close();
        }
    }
 
    public static int Main()
    {
        StartListener();
 
        return 0;
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.02.2012, 21:41
Ответы с готовыми решениями:

Реализовать механизм обмена сообщениями.
Привет Всем! Не могли бы мне помочь в следующей задачи!? 1)Задание: Делегаты и события. Реализовать механизм обмена сообщениями....

Разработка ActiveX для обмена сообщениями
Здравствуйте. Начинаю изучать написание ActiveX на С#. Нужно написать для начала какойнить ActiveX который принимал бы сообщение и...

Open Source протоколы для обмена мгновенными сообщениями
Всем добрый день, нахожу множество реализаций тех или иных протоколов для обмена мгновенными сообщениями для различных сетевых топологий,...

3
 Аватар для daruwanov
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
22.02.2012, 01:20
а зачем для сервера формы? Сервер отлично работает в консольном режиме...ему больше и не нужно.

по какому принципу вы хотите осуществить общение? Один человек отправляет сообщение... и все клиенты кто сейчас в сети и подключен.. его получают? или же через сервер организовывается общение множества пар(1 на 1 )- то есть общение с одним конкретным человеком?
0
23 / 23 / 5
Регистрация: 05.03.2009
Сообщений: 181
22.02.2012, 06:03  [ТС]
Хочется сделать так - на клиенте можно было бы выбирать, видя список подключённых пользователей, того или тех, кому хочется отправлять сообщение.

Консольный - да, но с GUI сервер на WinForms смотрится более красиво + у севрера должен быть дополнительный функционал по просмотру текущих подключенных пользователей и так далее
0
 Аватар для daruwanov
77 / 58 / 8
Регистрация: 10.03.2011
Сообщений: 354
22.02.2012, 14:09
Цитата Сообщение от freegat Посмотреть сообщение
но с GUI сервер на WinForms смотрится более красиво

Не по теме:

На WPF оно еще красивее будет



А если по делу - если я не ошибаюсь то нужно в отдельный поток выносить прослушку портов.. что бы форма не зависала...

а для того что бы реализовать то что вы хотите с общением выбранного пользователя то тут нужно при входе отсылать серверу сообщение о том что вы вошли.. он вам в ответ список пользователей подключенных.. вы их размещаете в какойнить листвью... или что то типа того... а дальше все просто - посылаете сообщение серверу с пометкой АLL допустим и он текст сообщения рассылает всем кто подключен.... и так же организовать пересылку личного- тета тет сообщения или группового...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2012, 14:09
Помогаю со студенческими работами здесь

Изменение ответа севрера
Собственно сервер высылает мне ответ(Response), но я должен как-то подменить этот ответ,т.е программа должна отлавливать входящие...

Моделирование обмена зашифрованными сообщениями с использованием класса RSACryptoServiceProvider
Помоги пожалуйста довести до ума,не получается у меня!!! using System; using System.Collections.Generic; using System.ComponentModel;...

Приложение мгновенного обмена сообщениями, как получить список друзей
Доброго времени суток! Я работаю на C# всего нечего, но он меня заинтересовал... и я решил на тему дипломной программы выбрать...

TCP чат для обмена сообщениями и файлами
Есть код TCP чата, и нужно мне описание типов данных для обмена сообщениями и файлами. А препод сказал что у вас string не должен быть в...

Создание программы для обмена сообщениями
Здраствуйте! Я хочу создать программу для обмена сообщениями, что-то наподобие ICQ ! Прошу скинуть ссылку где подробно описано как это...


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

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

Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru