|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
||||||
UDP сокет. Ошибка в программе.26.02.2012, 20:56. Показов 5255. Ответов 14
Метки нет (Все метки)
Здравствуйте. Здесь я приведу фрагмент своей программы, в который закралась ошибка. В нём описано, как сервер, используя протокол UDP, принимает запрос от клиента. Делает он это с помощью функции recvfrom. От этой функции он получает адрес клиента. Затем, использую функцию connect, связывает свой сокет с этим адресом, что поможет впоследствии отфильтровать запросы от других клиентов. Возникает здесь ошибка следующего характера: После связывания, команда send работает некорректно, она не отправляет клиенту никаких данных. Возможно, вопрос покажется вам глупым, однако прошу сделать скидку на то, что я ещё новичок по части сетевого программирования. Спасибо.
0
|
||||||
| 26.02.2012, 20:56 | |
|
Ответы с готовыми решениями:
14
Как только происходит попытка создать сокет для UDP - сокет TCP сразу ломается (выдает 10093). Производительность Try-Catch в Сокет UDP UDP отправка на закрытый сокет (ERROR) |
|
|
||||
| 26.02.2012, 21:06 | ||||
|
Добавлено через 3 минуты ![]() к тому же, ты пытаешься использовать уже привязанный сокет. по какому протоколу ты хочешь отправить данные? к то такой ans_START_serv?
0
|
||||
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 26.02.2012, 21:22 | |
|
madLenAddr не инициализирован. может поэтому вы получаете некорректный сокет. смотрели что вообще записывается при приеме в madAddress?
Добавлено через 6 минут connect & send для датаграмного сокета допустимы. по отношению к уже привязанному сокету - тоже
1
|
|
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
|||||||||||||
| 27.02.2012, 07:57 [ТС] | |||||||||||||
|
Когда я выковыривал этот фрагмент из своей программы, я, к сожалению, забыл о ans_START_serv. Восполняю:
Итак, printf сообщает, что madLenAddr=16. Я проинициализировал madLenAddr, однако, это ситуацию не изменило. Я переписал кусочек с send, чтобы конкретизировать ошибку, вот так:
0
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
||
| 27.02.2012, 09:00 [ТС] | ||
|
0
|
||
|
|
|
| 27.02.2012, 09:34 | |
|
предыдущее предупреждение в конце первого поста. мелким шрифтом.
при написании сообщения, в тулбаре редактора, есть список языков программирования. (скрин в атаче) кликаешь на нужный, и в редактор вставляются соответствующие теги. вот между ними и пишешь код. для цитат тоже есть теги. желтый балун.
0
|
|
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
|
| 27.02.2012, 09:42 [ТС] | |
|
Всё понятно. Просто из-за мелкого шрифта я не заметил свою ошибку раннее. Сейчас прочитал правила использования редактора сообщений форума (природная лень не позволила мне сделать это раньше). Впредь буду следовать им.
0
|
|
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|||||||||||
| 27.02.2012, 09:45 | |||||||||||
|
тестировал под виндой - работает
тест-клиент
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
||||||||||||||||
| 27.02.2012, 11:52 [ТС] | ||||||||||||||||
|
Очень странно, почему у меня по сути тоже самое не работает под Linux. Попробую поиграться с преобразованием типов, которое я произвожу над структурой адреса в recvfrom:
Добавлено через 1 час 51 минуту Я изменил код программы. Теперь madAddress имеет тип sockaddr. Таким образом я избавился от приведения типов в вышеуказанных функциях. И это, к сожалению, не помогло. Также следует отметить, что сообщения от клиента принимаются, правильно идентифицируются, сокет сервера при применении функции connect успешно связывается с адресом клиента, во всяком случае никакой ошибки не возвращается:
И тем не менее.... Так что танцы с бубнами продолжаются.
0
|
||||||||||||||||
|
Модератор
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
|
|
| 27.02.2012, 11:54 | |
|
а мой пример пробывали запускать на линухе? работает?
0
|
|
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
|
| 27.02.2012, 12:00 [ТС] | |
|
Сейчас попробую.
0
|
|
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 27.02.2012, 12:49 | |
|
connect() у Вас просто не работает, т.к. madLenAddr в recvfrom() 0.
0
|
|
|
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 21
|
|
| 27.02.2012, 22:28 [ТС] | |
|
Блин, оказалось, что неправильно инициализировал madLenAddr. Программа довольно объёмная, вот я и подправил не тот define. Как только исправил эту ошибку, программа заработала. Всех благодарю за помощь и прошу прощения, что отвлёк из-за своей невнимательности.
0
|
|
| 27.02.2012, 22:28 | |
|
Помогаю со студенческими работами здесь
15
Один сокет для TCP и UDP Отправить сериализованный объект через сокет по UDP Как через UDP сокет соединить трёх клиентов без сервера? Материнка 775 сокет и процессор 771 сокет, Совместимость 4 планки Apacer DDR3 по 4Gb/1333MHz от старой МВ сокет 775 могу ли я их использовать на сокет 2011 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|