Size: a a a

2020 April 10

АП

Александр Петров in Qt
Но, если указывать '''QUdpSocket::ShareAddress''' при бинде - это разве не разрешает общее использование ?
источник

AS

Anatoly Shirokov in Qt
Александр Петров
Здравствуйте, возникла нехорошая ситуация, не пойму как решить:

Есть 2 программы, находятся они на 1 машине, каждая из которых умеет читать и отправлять данные по udp. Данные эти должны отправляться по 1 порту.

С передачей проблем не возникает, но с приемом: принимает данные только последний забинденный по  адресу сокет. То есть, условно, если сначала запустить приложени 1, а затем 2, то принимать будет лишь второе, но если во время выполнения "перебиндить"(извините за выражение) ) сокет первого, то принимать начинает только он.
ip соединение - это пятерка:
адрес клиента
порт клиент
адрес сервера
порт сервера
протокол
источник

AS

Anatoly Shirokov in Qt
теперь рассказывай, что у тебя что
источник

АП

Александр Петров in Qt
Адреса у обоих приложений, как и порты одинаковые. Протокол UDP
источник

AS

Anatoly Shirokov in Qt
Александр Петров
Адреса у обоих приложений, как и порты одинаковые. Протокол UDP
ты противоречия не находишь?
источник

AS

Anatoly Shirokov in Qt
смотри, ты живешь в квартире 27, и сосед живет в квартире 27 в этом же доме. кому из вас доставлять почту?
источник

АП

Александр Петров in Qt
Хотелось бы, чтобы на двоих, а каждый из нас бы посмотрел ему ли эта посылка после чего принял решение забирать/нет))
источник

AS

Anatoly Shirokov in Qt
Александр Петров
Хотелось бы, чтобы на двоих, а каждый из нас бы посмотрел ему ли эта посылка после чего принял решение забирать/нет))
Да ты чертов гений
источник

МВ

Макс Воробьев in Qt
#вредные_советы два приложения распихать по виртуалкам с разными адресами и написать 3-е приложение, которое будет переправлять трафик
источник

м

миша in Qt
разве он сможет открыть один и тот же порт в 2 программах?
источник

M

Mr.Mait in Qt
А. Сглупил. Получается что у него 1 сервер и два клиента которые находятся на одном пк
источник

M

Mikhail in Qt
Вообще у linux сокетов есть странные флаги reuseaddress и reuseport, но похоже не для биндинга. А вообще, можно форкнуть процесс с забинденным портом, тогда сообщения будут приходить по раунд робину.
источник

АП

Александр Петров in Qt
Форк, думаю, тоже не то, ибо хотелось бы,чтобы независимые друг от друга были приложения. (Если я правильно понял, что fork() - это сишная функция, создающая копию процесса)
источник

АП

Александр Петров in Qt
С виртуалками похоже на извращение)
источник

AS

Anatoly Shirokov in Qt
Александр Петров
Форк, думаю, тоже не то, ибо хотелось бы,чтобы независимые друг от друга были приложения. (Если я правильно понял, что fork() - это сишная функция, создающая копию процесса)
XY проблема детектед
источник

AS

Anatoly Shirokov in Qt
если ты расскажешь зачем, тебе скажут как
источник

M

Mikhail in Qt
Александр Петров
Форк, думаю, тоже не то, ибо хотелось бы,чтобы независимые друг от друга были приложения. (Если я правильно понял, что fork() - это сишная функция, создающая копию процесса)
Форк и не решит твоей проблеме, т.к. сообщение будет приходить по очереди, одному из процессов, а не обоим одновременно
источник

SK

Stas Koynov in Qt
Александр Петров
Здравствуйте, возникла нехорошая ситуация, не пойму как решить:

Есть 2 программы, находятся они на 1 машине, каждая из которых умеет читать и отправлять данные по udp. Данные эти должны отправляться по 1 порту.

С передачей проблем не возникает, но с приемом: принимает данные только последний забинденный по  адресу сокет. То есть, условно, если сначала запустить приложени 1, а затем 2, то принимать будет лишь второе, но если во время выполнения "перебиндить"(извините за выражение) ) сокет первого, то принимать начинает только он.
ты понимаешь что бинд это серверная часть? сервер должен быть один!
источник

АП

Александр Петров in Qt
Ну, попробую объяснить) пишу имитатор входного абонента, одна из его задач отправлять управляющую информацию, еще одна получать ответную. Все действо должно происходить по определенному адресу/порту по udp. Написал, но помимо самого имитатора, по докам, необходимо написать "тестовую программу для имитатора", то есть своего рода имитатор того что мы имитируем. Он же должен, соответственно принимать управляющую информацию, а отправлять ответную.
источник

SK

Stas Koynov in Qt
вот тут все по полочкам кто что должен и в какой последовательности:https://www.geeksforgeeks.org/udp-server-client-implementation-c/
источник