|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|||||||||||||||||||||
И снова WinSock. UDP. Прием данных.05.05.2011, 22:10. Показов 17817. Ответов 16
Метки нет (Все метки)
До сих пор мучаюсь с изучением WinSock. Уже давно получилось послать команду серверу, но теперь не получается получить от него ответ. Буфер пишет какой-то мусор.
Дано: файл Unit1.cpp, sendrecieve.cpp, sendrecieve.h. Требуется: после отправки серверу команды getstatus получить строку со всякими параметрами сервера. Unit1.cpp: Код занесен в секундный таймер.
Две переменные для структуры sockaddr_in для функции sendCMD, которая посылает команду getstatus серверу и заголовки функций передачи/приема инфы.
В функции receiveINF(char *buf) я попробовал сделать прием сокета, и вдобавок чтобы он был асинхорнный. В буфер, как я уже писал выше, идет какой-то мусор. Где-то я что-то делаю не так. Вот только не могу понять, где. p.s. немного поразбиравшись прикрутил bind() но толку пока ноль.
Хотя делал strcat, в мемо с него всё нормально прочиталось.UPD #1: сейчас глянул сниффером, он посылает getstatus, потом по ICMP отсылает всю пришедшую с серва инфу ему назад, и в пакете написано - Destanation Unreachable. У меня команда sendto создает сокет, отправляет сообщение серверу, сокет закрывает, очищает его. По этому же принципе действует и функция приема пакета с сервера. Может, в этом и есть проблема? Что начальный сокет, с которого посылалось, закрывается и функция не знает порт, на который прислать пакет. Вот её (пока еще) БЫДЛОкод:
UPD #2: есть догадки, что надо как-то структуру эту всё время по новой не создавать, а что бы она централизованно где-то лежала. Хотя стоп... по идее при каждом новом коннекте надо же открывать новый сокет теоретически. Просто как мне оставить этот сокет открытым, но в от же время, что бы новые не создавались постоянно? Еще одна догадка в том, что может надо забиндить прогу уже сразу в sendCMD? Хотя наврядли.. Добавлено через 32 минуты UPD #3: народ подсказывает ещё, что лучше делать через поток. Как быть с этим в моём случае? что в поток "пихать"?
0
|
|||||||||||||||||||||
| 05.05.2011, 22:10 | |
|
Ответы с готовыми решениями:
16
UDP-сервер/клиент на Winsock
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 06.05.2011, 02:00 | |
|
Чем не устраивает TIdUDPServer?
Зачем так с WinSock извращаться?
0
|
|
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|
| 06.05.2011, 06:11 [ТС] | |
|
Что значит извращаться? По-моему всё нормально с WinSock. Indy-компоненты, как и вообще компоненты использовать не хочу, по этому делаю так. Тем более с Indy-компонентой я делал вначале, и она у меня постоянно глючила, поэтому нафиг, нафиг с ней ещё раз связываться. Ну а Вам, я вижу, просто хочется постов набить, ибо есть конкретные вопросы с просьбой объяснить, и ничего более. Спасибо, конечно, за поднятие темы, но лучше, что называется, по теме.
1
|
|
|
61 / 60 / 9
Регистрация: 13.01.2009
Сообщений: 322
|
|||||||||||
| 06.05.2011, 11:15 | |||||||||||
|
из статьи Криса Касперски
Пример реализации UDP-сервера
Пример реализации UDP-клиента
По шагам проверь
1
|
|||||||||||
|
|
|
| 06.05.2011, 11:50 | |
|
У меня с TNMUDP ничего не глючило. Тоже делал прогу для кс...
0
|
|
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|
| 06.05.2011, 13:55 [ТС] | |
|
AlexSt, спасибо, но этот код я уже, само собой, видел.
kzru_hunter, как уже писал выше, не хочу использовать компоненты. С Indy у меня вообще почти все идеально было, но вот из-за этого почти как раз и решил не мудрить, а написать свои функции для работы с сокетами.
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
| 06.05.2011, 14:17 | |
|
Embarcadero CBuilder 2010 работаю постоянно c UDP с помощью Indy никаких глюков ни разу не было!!!
Добавлено через 7 минут ну и если не хочешь с компонентами, работай с библиотекой ACE в Visual Studio - мощнее не бывает
0
|
|
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|
| 06.05.2011, 20:11 [ТС] | |
|
А, ну то есть, если с компонентами не хочу работать, то мне обязательно VS качать?
0
|
|
|
|
|
| 07.05.2011, 05:43 | |
|
Проще переделать под какой-нибудь компонент и задавать вопросы, когда возникает глюк.
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
| 07.05.2011, 11:33 | ||||||
|
Просто смешно звучит, когда человек работает в CBUILDER и не хочет использовать компоненты.
Зачем ещё CBuilder тогда нужен??? А к Visual Studio ты рано или поздно прийдёшь, поверь моему опыту!!! Когда столкнёшься с тем, что кроме компонентов никакие другие библиотеки к нему прикрутить нельзя. Добавлено через 1 час 16 минут Вот, держи Indy в консоли, у себя проверил, всё работает.
0
|
||||||
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
||
| 07.05.2011, 16:23 [ТС] | ||
). Ещё один момент, что моя хобби-программа с недавнего времени стала ещё и курсовой, по этому для меня сейчас важно (опять же, поставил цель себе я сам) написать именно так, как я хочу. Если не можете подтолкнуть маленько по вопросу, который я спросил, лучше ничего не писать. И хватит мне Indy уже предлагать... Тем более в Вашей функции, как я понимаю, только отправка серверу, что я вполне себе успешно реализовал. Проблема в правильном, а пока и вообще просто, получении инфы с сервера.Извиняюсь за резкость, но просто достало, что все пытаются мне эти Indy впихнуть, в которых, кстати, отправка данных на сервер еще банальней, чем на чистых сокетах.
1
|
||
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|||||||||||||||||||||
| 07.05.2011, 17:01 | |||||||||||||||||||||
|
Извини тоже за резкость, но ты ещё, как я вижу очень зеленый,
тебе знающие дяди, которые уже проехали всё это с бессонными ночами и красными глазами, пытаются помочь сделать всё проще и быстрее. Может ты ещё кросс-платформенности с winsock хочешь ![]() Так вот, уважаемый, если ты хочешь портируемости, то вот этого
И без этого не будет вот этого (это по твоему коду)
Просто, если у тебя задача стать профессионалом, то тебе просто немедленно надо ставить VisualStudio и кодить именно в ней.
0
|
|||||||||||||||||||||
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|
| 07.05.2011, 19:22 [ТС] | |
|
Я не спорю, что зеленый, и в курсе, чего у меня не будет в ВСке (видимо, уже зелень выцветать начинает -) ). Ставить не буду, потому что есть проект уже весомый достаточно, переделывать точно пока не буду, из-за того, что он - курсач.
Конкретно по теме - попробую сегодня-завтра придумать что-нибудь, как в потоке сделать с Event, потом если не получится, попробую со стандартной UDP-компонентой. Наверное. Надеюсь, к Indy не придется возвращаться. Кстати кроссплатформенность сделать для линукса не получится, потому что у меня сокеты 2.2 с определением пинга до сервера. Если, конечно, в лине сокеты не запилили)
0
|
|
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
| 08.05.2011, 00:20 | ||||||
|
Да будешь вознаграждён ты за своё упрямство,
вот держи код по обмену сообщениями между сервером и клиентом на сокетах. Обмен происходит в отдельных потоках, в качестве потока использую TIdThreadComponent, а если у тебя ненависть к инди, можешь использовать TThread, boost::thread и т.д. В общем, бросил на форму две кнопки TButton, TMemo и два TIdThreadComponent По нажатию первой кнопки сервер слушает, по нажатию второй кнопки - клиент отправляет и получает ответ от сервера.
1
|
||||||
|
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
|
|
| 08.05.2011, 08:23 [ТС] | |
|
Спасибо, по делу
Плюс покурю ещё немного маны на мсдн -) Добавлено через 18 минут Кстати у Вас не UDP, но принцип понял.
0
|
|
|
|
||
| 08.05.2011, 08:24 | ||
![]() ![]() Абсолютно не джентельментский совет в разделе C++ Builder. Имхо, если уж приспичило, приличные люди в подобных случаях используют услугу, которая называется Личные сообщения. Просто .
0
|
||
|
|
|
| 11.08.2011, 03:11 | |
|
У Indy просто свои нюансы они как то по особенному работают...
0
|
|
| 11.08.2011, 03:11 | |
|
Помогаю со студенческими работами здесь
17
Прием данных по UDP Передача с микрофона в udp и прием из udp на динамик UDP Winsock WinSock UDP по интернету Получение UDP в Winsock. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|