Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 15.06.2013
Сообщений: 135

Клиент-Серверное взаимодействие

28.03.2018, 16:21. Показов 1562. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Взываю о помощи )
Есть сервер в виде консоли. На котором реализован ряд методов для работы с БД. Так же имеется клиент который отправляет запросы на сервер и желает вызывать эти методы , что бы получать результат их работы.
Клиент и сервер связанны по протоколу TCP. обмениваются байт массивами.

Собственно вопрос: как запросить конкретный метод.
На клиенте я задаю имя метода с параметрами, преобразую это все добро в байт массив и кидаю в сервер
Сервер ловит пакет, расшифровывает обратно в string, но а как дальше задействовать полученную сроку в роли команды ?

Заранее благодарен

Добавлено через 17 минут
Или может возможно какие-то другим образом взаимодействовать с сервером с методами сервера?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.03.2018, 16:21
Ответы с готовыми решениями:

Как организовать клиент-серверное взаимодействие посредством JSON?
Добрый день! Хотелось бы реализовать такую задачу : есть БД на веб сервере , как мне подгружать данные с бд в десктоп проект, и если я...

Клиент-серверное приложение
Как создать Клиент-серверное приложение чтоби бил 1 сервер и возможность подключения к нему нескольким клиентам Желательно пример в форме.

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

7
62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
28.03.2018, 16:28
Цитата Сообщение от albuk Посмотреть сообщение
расшифровывает обратно в string, но а как дальше задействовать полученную сроку в роли команды ?
или я не понял вопроса или
C#
1
2
3
4
5
6
7
8
9
switch(str)
{
case "a":
a();
break;
case "b":
b();
break;
}
0
1 / 1 / 0
Регистрация: 15.06.2013
Сообщений: 135
28.03.2018, 17:55  [ТС]
Ну это подходящий вариант , только у меня методы с параметрами
в качестве параметров будут передаваться значения полей с клиента

ну а если писать свитчи для всех вриантов параметров , то эти конструкции будут огромными
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
28.03.2018, 18:07
albuk, погугли слово WCF.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
28.03.2018, 18:25
albuk, у тебя только клиент будет отправлять запросы? Если "да", то идея с TCP так себе. И вообще, что-то дубликат темы... Клиент-Сервер

По поводу обработки сообщения, немало зависит от способа передачи. Няпример можно так (пример довольно старый, куча всего бы поменял, но в принципе рабочий и относительно гибкий) https://www.cyberforum.ru/blog... g1356.html

Теперь на основе полученого базового меседжа можно няваять обработчики. Можно и через switch, но жутко неудобно и будет один супер-километровый-класс заняющий обо всех хендлерах. Та еще хня. Как вариант, можно так:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
class Program
    {
        static void Main(string[] args)
        {
            var arr = new Vocaloid[] { new Miku(), new Rin(), new Len() };
 
            var handlers = Assembly.GetExecutingAssembly()
                .GetTypes()
                .Where(myType => myType.IsClass && !myType.IsAbstract && myType.IsSubclassOf(typeof(Handler)))
                .Select(type => (Handler)Activator.CreateInstance(type))
                .ToDictionary(k => k.MessageType, v => new Action<Vocaloid>(v.Play));
 
            foreach (var message in arr)
                handlers[message.GetType()](message);
        }
    }
 
    abstract class Vocaloid
    {
        internal abstract string Name { get; }
    }
 
    class Miku : Vocaloid
    {
        internal int Number => 1;
        internal DateTime Birthday => new DateTime(2007, 8, 31);
        internal override string Name => "Hatsune-Miku";
    }
 
    class Rin : Vocaloid
    {
        internal override string Name => "Kagamine-Rin";
    }
 
    class Len : Vocaloid
    {
        internal override string Name => "Kagamine-Len";
    }
 
    abstract class Handler
    {
        internal abstract Type MessageType { get; }
        internal abstract void Play(Vocaloid vocaloid);
    }
 
    abstract class Handler<T> : Handler
        where T : Vocaloid
    {
        internal override Type MessageType => typeof(T);
 
        internal override void Play(Vocaloid vocaloid)
            => Play((T)vocaloid);
 
        protected abstract void Play(T vocaloid);
    }
 
    class MikuPlayer : Handler<Miku>
    {
        protected override void Play(Miku vocaloid)
            => Console.WriteLine($"Name = {vocaloid.Name}; Year = {(new DateTime(1, 1, 1) + (DateTime.Now - vocaloid.Birthday)).Year - 1}");
    }
 
    class RinPlayer : Handler<Rin>
    {
        protected override void Play(Rin vocaloid)
            => Console.WriteLine($"Name = {vocaloid.Name}; Sex = girl");
    }
 
    class LenPlayer : Handler<Len>
    {
        protected override void Play(Len vocaloid)
            => Console.WriteLine($"Name = {vocaloid.Name}; Sex = boy");
    }
1
1 / 1 / 0
Регистрация: 15.06.2013
Сообщений: 135
28.03.2018, 23:36  [ТС]
WCF пока попробую проштудировать

Wolfdp, по ссылке перейти не могу. Возможно, не достаточно прав.

Добавлено через 43 минуты
Да, по первому впечатлениею WCF - это то что надо
но немного сложно это все выглядит с первого взгляда.

Если у кого-то есть ссылки на доходчивую литературку по конкретной сфере применения , то буду благодарен
0
62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
29.03.2018, 04:08
Цитата Сообщение от Wolfdp Посмотреть сообщение
Няпример можно так
блог закрыт
Цитата Сообщение от Wolfdp Посмотреть сообщение
у тебя только клиент будет отправлять запросы? Если "да", то идея с TCP так себе.
можно поподробнее чем плохая идея и на чем лучше писать в таком случае? мне тоже нужен был сервер где только клиенты отправляют запросы, я написал на http. куча проблем с обработкой приходящих клиентов. как оказалось их вообще ограничить не получится. только если выделить мало потоков для их обработки и пусть сами делят эти потоки кто как сможет. Собирался под tcp переписывать уже
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
29.03.2018, 19:06
Цитата Сообщение от Sternman Посмотреть сообщение
можно поподробнее чем плохая идея и на чем лучше писать в таком случае?
тем, что WCF для этого есть.

Добавлено через 8 часов 32 минуты
ужс... либо по умолчанию блог закрыт, либо в приступе паранои закрыл доступ.

https://www.cyberforum.ru/blog... g1356.html

хотя, как я уже понял, не актуально в виду юзания wcf. =)

Цитата Сообщение от albuk Посмотреть сообщение
по конкретной сфере
гугли "C# удаленые методы"
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2018, 19:06
Помогаю со студенческими работами здесь

Клиент серверное приложение
Есть приложения, но у меня при отключении клиента от сервера, сервер тоже закрывается.Как сделать чтобы сервер оставался работать дальше?Ну...

Клиент-серверное приложение
Здарвствуйте уважаемые форумчане, есть такое приложение (создано исключительно для теста соединения): using System; using...

Клиент-Серверное приложение на C#
Доброго времени суток. Возможно я буду не первым кто задает подобны вопрос, но все же: подскажите хорошую литературу с примерами, по...

Клиент-серверное приложение
Народ, у меня не хочет работать приложение. Скажите, что я делаю не так? Будет здорово, если мой код поправите. Сервер каждые 100...

Клиент-серверное приложение на сокетах
всем привет. Пытаюсь написать свой первый Клиент-сервер на WinForms. Пока успехом не пахнет если есть минутка глянте. КЛИЕНТ ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru