|
203 / 203 / 13
Регистрация: 14.10.2011
Сообщений: 227
|
|||||||||||
.NET 4.x Технология клиент-сервер. Классы клиента и сервера. Обсуждение16.10.2011, 16:02. Показов 37689. Ответов 107
Метки нет (Все метки)
В данном теме выкладываю свои классы клиента и сервера, а так же простеньких примеров реализованных на этих классах. Жду конструктивной критики, идей, предложений по улучшению, оптимизации и прочего.
Так же прошу поправлять меня, если комментарии в коде не соответствуют реальной действительности. Комментировал то как я это понимаю. P.S. с орфографией тоже туговато, так что исправляем ![]() Класс СЕРВЕРА.
Класс КЛИЕНТА
Сообщение в разработке. Примеры будут чуть позже.
35
|
|||||||||||
| 16.10.2011, 16:02 | |
|
Ответы с готовыми решениями:
107
Как вызвать Disconnect клиента (Технология Клиент-Сервер) Чат "Сервер-клиент". На сервер не могу отправить сообщение с клиента Http сервер и клиент. При попытке получить ответ клиента от сервера ошибка: Поток был недоступен для чтения |
|
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 445
|
|
| 20.04.2013, 00:13 | |
|
0
|
|
|
44 / 44 / 4
Регистрация: 30.04.2011
Сообщений: 283
|
||||||||||||
| 20.04.2013, 12:01 | ||||||||||||
|
Micro, А как порты открыть?
Он запускает сервер:
0
|
||||||||||||
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
|
| 22.04.2013, 08:25 | |
|
Отличные классы, очень выручили, правда при работе в интернете появляться проблемка...
происходит при следующих условиях: пинг больше 30 +-10, цикличная отправка длинных пакетов. И собственно проблема в том что пакеты попадают в процедуру doListen, как то не так... Пример Пакет "123456789;", доходит в виде двух "123" и "456789;". Бывает что приходит по 2-3 пакета за раз, в принципе это все можно решить... Но иногда пакет бьется на 3 и более частей, и установить исходный порядок нет возможности. Кто ни будь сталкивался с подобным? Есть идеи устранения проблемы? PS размер буфера менял, встречается как на сервере так и на клиенте.
0
|
|
|
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 445
|
|
| 26.04.2013, 20:59 | |
|
Dim1One, Нет, нужно открывать в NAT и потом указывать локальный айпи.
NIPR, Socket.NoDelay = false
1
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
||
| 04.05.2013, 17:41 | ||
|
0
|
||
|
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 445
|
|
| 04.05.2013, 17:44 | |
|
Попробуй на клиенте/сервере принимать инфу пока последний символ не равен ";"
А потом уже кидать на событие OnRead Либо в первом пакете отсылать длинну пакета вообщем
0
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
||
| 05.05.2013, 07:50 | ||
|
последовательно отправляться пакеты "1234567890;", "№%:?*()_+;", "йцукенгш;". а приходит вот такая каша: "1234567890;№%:?*", "йцукенгш;?*()_+;" и к сожаление такую кашу не всегда удаётся расшифровать, даже в ручную
0
|
||
|
70 / 71 / 19
Регистрация: 01.05.2013
Сообщений: 279
|
|
| 22.05.2013, 17:57 | |
|
Подскажите пожалуйста 2 вещи.
1. Как сделать так чтобы сервер отправлял клиентам только сообщение, без указания времени, даты и >>Сервер? 2.Как передать не текст, а содержимое Picture Box от сервера к клиенту?
0
|
|
|
43 / 43 / 5
Регистрация: 12.11.2011
Сообщений: 445
|
||||||
| 22.05.2013, 23:37 | ||||||
|
По-моему если пакет разрывается то он приходит строго по порядку, как и отправлялся. А если я ошибаюсь то придется вам придумывать какие-либо заголовочные байты либо вот такой тип
0
|
||||||
|
6 / 6 / 2
Регистрация: 06.03.2013
Сообщений: 79
|
|
| 25.06.2013, 00:05 | |
|
Господа можно примеры с командами, а то делаю синхронизацию с потоками что то робит что то не робит...
0
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
|
| 25.06.2013, 06:20 | |
|
Лучше дай свой, и объясни что именно не рабит.
Вообще вся суть синхронизации, это работа с элементами управления формы, если ты конечно не используешь общие данные, тогда это сильно нужно постараться чтоб синхронизировать... Если проблема с выводом то смотри пример автора, вывод в TextBox рабит без проблем, если нужно что куда нить еще вывести данные, то я сделал так: 1. Прослеживаешь цепочку синхронизации, это вызов процедуры, процедура синхронизации, и процедура которая запускается уже синхронизирована 2. Добавляешь во все эти процедуры еще один параметр я взял типа Integer. В него ты будешь передавать числа, напрмер хочу вывести в TextBox1 - передам 1, или же в Label1 - 2, и тп... Про делегаты еще не забудь... 3. В конечной процедуре(которая уже вносит изменения в контролы) делаешь выборку относительно нового параметра, и в каждую секцию выборки пишешь изменение отдельного контрола. Все. Не самый лучшей вариант, но в моей задачи подходящий, вообще можно подумать о передаче в качестве параметра - сам эллемент управления...
1
|
|
|
6 / 6 / 2
Регистрация: 06.03.2013
Сообщений: 79
|
|
| 25.06.2013, 13:01 | |
|
Да синхронизация робит нормально разобрался, да насчет выборки нового параметра и вбивание изменений неудобно совсем!))) Кстати насчет элементов управления может есть мысль допустим содержимое ListView от клиента передать серверу в ListView?
0
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
|
| 25.06.2013, 13:24 | |
|
Для этого в идеале новую тему создавать надо, но вариант на вскидку...
С помощью For Each получаешь нужную инфу из ListView. Если не знаешь как то здесь я выкладывал код, думаю сообразишь... попутно собирая ее в строку например "первый элемент/второй элемент/третий...", слеш это разделитель, и отправляешь по соединению... На приеме, главная задача, разбить инфу обратно, я использую функцию Split. Пример a()=split(переменная_с_текстом,"/") После перебираешь массив а(), попутно заполняя ListView...
1
|
|
|
6 / 6 / 2
Регистрация: 06.03.2013
Сообщений: 79
|
|
| 25.06.2013, 14:13 | |
|
@NIPR, да такая идея приходила мне в голову, но она какая то грубоватая если можно так сказать =) Но все равно спасибо за совет буду думать как еще можно передать...
0
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
|
| 25.06.2013, 14:38 | |
|
1
|
|
|
70 / 71 / 19
Регистрация: 01.05.2013
Сообщений: 279
|
|
| 23.07.2013, 11:09 | |
|
Подскажите пож, я попытался подключить клиент к серверу по своему IP... Я запустил сервер, вел в клиенте в поле для подключения свой IP(с сайта http://2ip.ru/), нажал подключится, но он написал мне ошибку:
Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера IP который я ввел:13000 Я проверял на своем компьютере на 1 винде, так же проверял на виртуалке. Результат тот же самый.
0
|
|
|
7 / 7 / 0
Регистрация: 13.09.2012
Сообщений: 94
|
||
| 23.07.2013, 11:29 | ||
|
0
|
||
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
||
| 23.07.2013, 11:30 | ||
|
2. Если работаешь через сеть, то нужен "Сетевой IP", а не с 2ip.ru 3. Если машина к которой ты подключаешься находиться за устройством которое создаёт сеть(роутер и тп), то нечего и не выйдет, тк подключение идет к "интернет-IP", который принадлежит устройству, а не устройствам за ним.
0
|
||
|
70 / 71 / 19
Регистрация: 01.05.2013
Сообщений: 279
|
|
| 23.07.2013, 11:56 | |
|
NIPR,
На виртуалке антивируса нет, на основном аваст 2009г. При запуске программы спрашивает разрешение кажется на передачу тех самых пакетов. Компьютер подключен через кабель напрямую, не через роутер. То есть как я понял, можно запустить у себя на компьютере сервер, и например из другой квартире можно запустить клиент и вести сетевой IP, причем эти компьютеры не должны быть соединены общей локальной сетью? Где тогда можно узнать свой сетевой IP? Vic45rus, То есть, если я все то же самое проделаю с компьютером в другой комнате, квартире, городе и т. д., то у меня будет все работать? Не обязательно что бы была локальна сеть?
0
|
|
|
10 / 10 / 0
Регистрация: 16.03.2012
Сообщений: 58
|
|
| 23.07.2013, 12:33 | |
|
О чем спрашивает тебя антивирус - только разработчикам известно. В программе должен существовать список приложений которым разрешен доступ к передачи информации. Если брандмауэр не выключен то и там проверь.
Для работы класса необходима Сеть либо выход в Интернет, от тебя требуется только указать IP. Сетевой IP - прописывается на устройстве создающем сеть, со стороны клиента - вроде нет(тут я не вкурсе), у меня к примеру роутер, в настройках привязал определенный IP к своей машине, до этого динамический был. К сообщение Vic45rus'а могу добавить - 127.0.0.1 - тоже отправляет пакеты самому себе. Еще интересный вариант 255.255.255.255 - отправляет пакет на все устройства в локальной сети. Добавлено через 6 минут Вообще если в первый рас с этим работаешь, советую посмотреть на VB 6 и Winsock, довольна быстро осознаешь принцип работы с такими вещами, а потом можно и сюда заглянуть)
0
|
|
| 23.07.2013, 12:33 | |
|
Технология создания приложений на основе многоуревневой архитектуры клиент - Web-сервер - сервер баз данных
Клиент-сервер, передать строку с клиента на сервер Клиент-Сервер. Распознавание клиента Получить ip адрес клиента (асинхронный клиент - сервер) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|