|
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
|
||||||
TcpClient для отправки на разные IP22.10.2018, 16:08. Показов 1733. Ответов 7
Метки нет (Все метки)
Добрый день не могу найти ответа на вопрос, по этому задам здесь. У меня стоит задача создать класс который будет отправлять по ip пакеты другому устройству. Как отправить один на один я знаю. Но предполагается, что устройств будет много и для этих целей нужно использовать разные TcpClient или один?
Меня смущает метод Connect класса TcpIP
0
|
||||||
| 22.10.2018, 16:08 | |
|
Ответы с готовыми решениями:
7
Разные способы отправки почты в PHP Создание пакета для TcpClient Клиент - сервер. Где использовать Using для TcpClient? |
|
|
||
| 22.10.2018, 22:10 | ||
|
Важно понимать следующую вещь. Протокол TCP это протокол с предварительной установкой соединения. То есть вы не можете просто так взять и отправить данные. Предварительно с конечным хостом устанавливается соединение, и затем уже происходит обмен данными. Соответственно, если у вас несколько хостов, то и соединений нужно устанавливать несколько, а значит и сокетов (т.е. TcpClient) должно быть несколько. Это особенность протокола TCP. Если бы вы использовали например UDP, то там не нужно устанавливать предварительное соединение и потому там можно отправлять пакеты на разные IP одновременно. Но в TCP такой возможности нет. PS Хотя если быть точным, то мультикаст есть и в TCP, но это больше экзотика и наврядли будет работать в реальности, первый же роутер это запорет. Кроме того при мультикасте теряется гарантированность доставки, что делает быссмысленным применение именно TCP.
1
|
||
|
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
|
|
| 23.10.2018, 12:11 [ТС] | |
|
Спасибо за ответ. Я знаю что для tcp ip нужено соединение и я до этого работал практически с одним Udp и там конечно проще отправил и забыл, ну или принял что ответили, единственное что нужно было слушать определенный порт. Так вот, вопрос по нарастающей) У меня есть УСТРОЙСТВА отправляющие на определенный порт и работающие на TcpIp, как быть!? Я разве могу сделать разных TcpClient на один и тот же порт, но на разные ip адреса!? Что то мне подсказывает что нихт и невер. Тогда как быть в такой ситуации? Как общаться с устройствами работающими на протоколеTcpIp и имеющими статический порт.(Так бывает в некоторых протоколов, что порт зарезервирован). Спасибо.
0
|
|
|
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
|
|
| 23.10.2018, 12:37 [ТС] | |
|
Может я не совсем правильно выразился, порт прослушки тоже тот же.
0
|
|
|
|
||
| 23.10.2018, 13:27 | ||
|
Если у вас сервером является компьютер, а клиентом - устройство, то они могут конектится на один порт сервера. Но тогда же на сервере нужно применять не TcpClient, а TcpListener.
0
|
||
|
19 / 18 / 7
Регистрация: 16.05.2017
Сообщений: 447
|
|
| 23.10.2018, 13:36 [ТС] | |
|
Есть устройства которые имеет дуплексный канал связи и у них зарезервированный порт и они отправляют сообщения на один и тот же порт. Выходит что на компьютере действительно должен запускаться TcpListener, для приема сообщений, но способен ли он отправлять сообщения? Если честно я путаюсь, особенно в случае как этот, кто сервер, а кто клиент. Эти устройства сами отправляют сообщения, но так же и отвечают на запросы, но они находятся в режиме ожидания пока к ним кто то не подключится. Так вот я обычно и понимаю под сервером то устройство которое ожидает подключение. Поправьте если что.
0
|
|
|
|
|
| 23.10.2018, 13:54 | |
|
BaredJJ,
Я так понимаю, что ваше устройство может работать и как сервер и как клиент? Ок, тогда вам нужно сделать следующее: 1) Если комп хочет начать соединение с устройством (то есть устройство выступает как сервер), то вы создаете TcpClient для каждого устройства и соединяетесь с ним. 2) Если устройство хочет начать соединение (то есть сервером является комп), то на сервере должен быть постоянно запущен в отдельном потоке TcpListener, который методом AcceptTcpClient вернет вам опять же TcpClient, через который вы можете общаться с устройством. Этот метод вам вернет TcpClient как только какое-либо устройство соединится с компом. Простейший пример здесь. В обоих случаях обмен ведется через TcpClient. Но только во втором случае не вы устанавливаете соединение, а клиент. А вам дается уже соединенный сокет в TcpClient.
1
|
|
| 23.10.2018, 13:54 | |
|
Помогаю со студенческими работами здесь
8
TcpClient как задать таймаут для установки соединения
Надо, чтобы разные ссылки имели разные цвета и чтобы при наведении на них мышой также были разные цвета. Написать прогу для s60 для отправки смс В чем ошибка дан код программы для отправки ссылки в базу .txt для накрутки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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 была полностью переписана на Си, в. . .
|