Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
 Аватар для BaredJJ
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447

TcpClient для отправки на разные IP

22.10.2018, 16:08. Показов 1733. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день не могу найти ответа на вопрос, по этому задам здесь. У меня стоит задача создать класс который будет отправлять по ip пакеты другому устройству. Как отправить один на один я знаю. Но предполагается, что устройств будет много и для этих целей нужно использовать разные TcpClient или один?
Меня смущает метод Connect класса TcpIP
C#
1
public void Connect(IPAddress[] ipAddresses, int port);
Судя по сигнатуре нужно создавать новый, если только хочу поменять порт. Правильно ли я это понимаю? И могу ли я вызывать метод Connect для каждого Ip по очереди, не передавая массивом или будет Exception, что порт занят? Проверить на практике не могу, т.к. сейчас в наличии всего одно устройство с IP(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.10.2018, 16:08
Ответы с готовыми решениями:

Разные способы отправки почты в PHP
Итак, озадачился данной проблемой, но прочитал несколько статей и в голове сложилась каша. Первое. Я понял, существует несколько...

Создание пакета для TcpClient
Друзья, помогите создать пакет, в "тупую" хотя бы, и отправить его. выглядеть он должен вот так: Заранее...

Клиент - сервер. Где использовать Using для TcpClient?
Вот мы запускаем Server new Server(80); internal class Server { private readonly TcpListener Listener; ...

7
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.10.2018, 22:10
Цитата Сообщение от BaredJJ Посмотреть сообщение
Как отправить один на один я знаю. Но предполагается, что устройств будет много и для этих целей нужно использовать разные TcpClient или один?
Нужно создавать каждый раз новый TcpClient.

Важно понимать следующую вещь. Протокол TCP это протокол с предварительной установкой соединения. То есть вы не можете просто так взять и отправить данные. Предварительно с конечным хостом устанавливается соединение, и затем уже происходит обмен данными. Соответственно, если у вас несколько хостов, то и соединений нужно устанавливать несколько, а значит и сокетов (т.е. TcpClient) должно быть несколько.
Это особенность протокола TCP. Если бы вы использовали например UDP, то там не нужно устанавливать предварительное соединение и потому там можно отправлять пакеты на разные IP одновременно. Но в TCP такой возможности нет.

PS Хотя если быть точным, то мультикаст есть и в TCP, но это больше экзотика и наврядли будет работать в реальности, первый же роутер это запорет. Кроме того при мультикасте теряется гарантированность доставки, что делает быссмысленным применение именно TCP.
1
 Аватар для BaredJJ
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
23.10.2018, 12:11  [ТС]
Спасибо за ответ. Я знаю что для tcp ip нужено соединение и я до этого работал практически с одним Udp и там конечно проще отправил и забыл, ну или принял что ответили, единственное что нужно было слушать определенный порт. Так вот, вопрос по нарастающей) У меня есть УСТРОЙСТВА отправляющие на определенный порт и работающие на TcpIp, как быть!? Я разве могу сделать разных TcpClient на один и тот же порт, но на разные ip адреса!? Что то мне подсказывает что нихт и невер. Тогда как быть в такой ситуации? Как общаться с устройствами работающими на протоколеTcpIp и имеющими статический порт.(Так бывает в некоторых протоколов, что порт зарезервирован). Спасибо.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
23.10.2018, 12:28
Цитата Сообщение от BaredJJ Посмотреть сообщение
Я разве могу сделать разных TcpClient на один и тот же порт, но на разные ip адреса!?
Да, вполне можете
0
 Аватар для BaredJJ
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
23.10.2018, 12:37  [ТС]
Может я не совсем правильно выразился, порт прослушки тоже тот же.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.10.2018, 13:27
Цитата Сообщение от BaredJJ Посмотреть сообщение
Может я не совсем правильно выразился, порт прослушки тоже тот же.
Объясните более подробно что и куда отправляется? Что за порт прослушки? У вас что является клиентом, а что сервером? Кто инициирует соединение?
Если у вас сервером является компьютер, а клиентом - устройство, то они могут конектится на один порт сервера. Но тогда же на сервере нужно применять не TcpClient, а TcpListener.
0
 Аватар для BaredJJ
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
23.10.2018, 13:36  [ТС]
Есть устройства которые имеет дуплексный канал связи и у них зарезервированный порт и они отправляют сообщения на один и тот же порт. Выходит что на компьютере действительно должен запускаться TcpListener, для приема сообщений, но способен ли он отправлять сообщения? Если честно я путаюсь, особенно в случае как этот, кто сервер, а кто клиент. Эти устройства сами отправляют сообщения, но так же и отвечают на запросы, но они находятся в режиме ожидания пока к ним кто то не подключится. Так вот я обычно и понимаю под сервером то устройство которое ожидает подключение. Поправьте если что.
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10427 / 5157 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.10.2018, 13:54
BaredJJ,
Я так понимаю, что ваше устройство может работать и как сервер и как клиент?
Ок, тогда вам нужно сделать следующее:
1) Если комп хочет начать соединение с устройством (то есть устройство выступает как сервер), то вы создаете TcpClient для каждого устройства и соединяетесь с ним.
2) Если устройство хочет начать соединение (то есть сервером является комп), то на сервере должен быть постоянно запущен
в отдельном потоке TcpListener, который методом AcceptTcpClient вернет вам опять же TcpClient, через который вы можете общаться с устройством. Этот метод вам вернет TcpClient как только какое-либо устройство соединится с компом. Простейший пример здесь.

В обоих случаях обмен ведется через TcpClient. Но только во втором случае не вы устанавливаете соединение, а клиент. А вам дается уже соединенный сокет в TcpClient.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2018, 13:54
Помогаю со студенческими работами здесь

TcpClient как задать таймаут для установки соединения
Добрый день Возникла проблема. При установке соединения с хостом на закрытый порт - поток висит 23 секунды и ждёт ответа от удаленного...

Форма отправки. Ссылка на страницу после отправки письма
Я пробовал 2 -3 разных решения из уроков. Результат один. Привожу самый простенький код. Все лежит в корне темы. mail.php <?php ...

Надо, чтобы разные ссылки имели разные цвета и чтобы при наведении на них мышой также были разные цвета.
День добрый. Что-то я никак понять не могу. Делаю сайт. Мне надо, чтобы разные ссылки имели разные цвета и чтобы при наведении на них...

Написать прогу для s60 для отправки смс
помогите написать программу которая послыает смс по нажатии кнопок...программа для Нокиа,платформа с60.. понимаю,ламерская просьба...но я...

В чем ошибка дан код программы для отправки ссылки в базу .txt для накрутки
Дан код программы для отправки ссылки в базу .txt для накрутки Помогите найти ошибку ! Заранее Спасибо.. var Vf: TextFile; ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru