inventor 0 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба Не совсем понятно в какую ветку мне поместить вот такой вопрос: делаю прогу во FreeRTOS для ARM контроллера cc3200 мне нужно соединение по сети, где мой контроллер клиент WiFi точки доступа от подсоединяется к ней, получает IP адрес по DHCP далее он работает как UDP сервер и я могу его опрашивать внешней программой - клиентом. Проблема вот в чем - адрес, который назначается роутером время от времени может меняться и в самом неприятном случае я вообще могу его знать. Поэтому хотелось бы назначить для моего контроллеру какое то имя, по которому я мог бы к нему обратиться, ну, например "centaurus": Вот что я пишу в лог от контроллера R 25-11-2015 11:07:40.047 INFO: Prog. ver: 0.04 from 25.11.15 11:07:40 R 25-11-2015 11:07:41.561 INFO: Device is configured in default state R 25-11-2015 11:07:42.315 INFO: Device started as STATION R 25-11-2015 11:07:42.840 [WLAN EVENT] STA Connected to the AP: NPO-NIK BSSID: 14:cc:20:2e:4e:d0 R 25-11-2015 11:07:42.973 [NETAPP EVENT] IP Acquired: IP=192.168.0.82 , Gateway=192.168.0.1 R 25-11-2015 11:07:43.754 INFO: SSID Name: NPO-NIK R 25-11-2015 11:07:43.757 INFO: SSID Passwd: ****** R 25-11-2015 11:07:43.761 INFO: Sec Type: WPA2 R 25-11-2015 11:07:43.765 INFO: Connected OK R 25-11-2015 11:07:43.769 INFO: Connection established w/ AP and IP is aquired R 25-11-2015 11:07:43.776 INFO: Create Socket OK. Port: 10025 R 25-11-2015 11:07:43.782 INFO: Bind Socket OK при соединениии с сервером на сс3200 передаю и получаю: R 25-11-2015 11:08:05.212 SendTo (192.168.0.36)... OK R 25-11-2015 11:08:07.754 SendTo (192.168.0.36)... OK R 25-11-2015 11:08:10.417 SendTo (192.168.0.36)... OK R 25-11-2015 11:08:12.977 SendTo (192.168.0.36)... OK R 25-11-2015 11:08:15.537 SendTo (192.168.0.36)... OK R 25-11-2015 11:08:18.301 SendTo (192.168.0.36)... OK Вобщем, как мне сделать так, что бы не зная IP адреса к нему можно было бы обратиться по имени? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 8 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба Вобщем, как мне сделать так, что бы не зная IP адреса к нему можно было бы обратиться по имени? 2 шага нужно сделать. 1) На роутере нужно закрепить фиксированный IP-адрес за конкретным клиентом (статическая таблица DHCP), если роутер это умеет. 2) Если хотите обращаться к серверу по имени - вам нужен DNS-сервер. Где он будет находиться - в роутере, или ещё где-то в сети, - отдельный вопрос. IP-адрес этого DNS-сервера нужно будет указать в настройках сетевого соединения клиента, с которого пойдут запросы к серверу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба 2 шага нужно сделать. 1) На роутере нужно закрепить фиксированный IP-адрес за конкретным клиентом (статическая таблица DHCP), если роутер это умеет. 2) Если хотите обращаться к серверу по имени - вам нужен DNS-сервер. Где он будет находиться - в роутере, или ещё где-то в сети, - отдельный вопрос. IP-адрес этого DNS-сервера нужно будет указать в настройках сетевого соединения клиента, с которого пойдут запросы к серверу. т.е. на стороне своей платы это не сделать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба т.е. на стороне своей платы это не сделать? А что в API сс3200 нет mDNS? Странно, на CC3100 есть. На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то. Под Android mDNS тоже работает как родной. С iOS тоже все понятно. Вообщем нет никаких проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба А что в API сс3200 нет mDNS? Странно, на CC3100 есть. На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то. Под Android mDNS тоже работает как родной. С iOS тоже все понятно. Вообщем нет никаких проблем. нашел этот микро DNA в примерах (микро надеюсь) а как он работает, кто то может объяснить на пальцах? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба нашел этот микро DNA в примерах (микро надеюсь) а как он работает, кто то может объяснить на пальцах? А оно интересно? Главное что этим способом транслируется имя дивайса всей сети. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба А оно интересно? Главное что этим способом транслируется имя дивайса всей сети. запустил эту прогу, но что то ничего не получилось #ifdef MDNS_ADVERTISE #define APPLICATION_NAME "mDNS Advertise" #else #define APPLICATION_NAME "mDNS Listen" #endif #define APPLICATION_VERSION "1.1.1" #define SERVICE_NAME "CC3200._uart._tcp.local" насколько понимаю теперь имя должно быть CC3200._uart._tcp.local но почему то на пинг ничего не отзывается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 3 декабря, 2015 Опубликовано 3 декабря, 2015 · Жалоба насколько понимаю теперь имя должно быть CC3200._uart._tcp.local но почему то на пинг ничего не отзывается Нет, имя задается вызовом функции API: sl_NetAppSet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(URN_NAME), (unsigned char *) URN_NAME) И будет оно в этом случае: <URN_NAME>.local Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 4 декабря, 2015 Опубликовано 4 декабря, 2015 · Жалоба Нет, имя задается вызовом функции API: sl_NetAppSet (SL_NET_APP_DEVICE_CONFIG_ID, NETAPP_SET_GET_DEV_CONF_OPT_DEVICE_URN, strlen(URN_NAME), (unsigned char *) URN_NAME) И будет оно в этом случае: <URN_NAME>.local попробоввал - ничего не выходит а как правильно вызвать эту функцию, нужно ли перед ней вызывать sl_NetAppMDNSRegisterService? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 4 декабря, 2015 Опубликовано 4 декабря, 2015 · Жалоба del Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 4 декабря, 2015 Опубликовано 4 декабря, 2015 · Жалоба попробоввал - ничего не выходит а как правильно вызвать эту функцию, нужно ли перед ней вызывать sl_NetAppMDNSRegisterService? Ну потом еще надо включить сам сервис: #define MDNS_SERVICE_1 "PC1._ipp._tcp.local" #define MDNS_TEXT_1 "vendor=TI" #define MDNS_PORT_1 23 #define TTL 2000 #define UNIQUE_SERVICE 1 sl_NetAppStart(SL_NET_APP_MDNS_ID); sl_NetAppMDNSUnRegisterService(0, 0); sl_NetAppMDNSRegisterService(MDNS_SERVICE_1,pal_Strlen(MDNS_SERVICE_1),MDNS_TEXT_1,pal_Strlen(MDNS_TEXT_1),MDNS_PORT_1, TTL, UNIQUE_SERVICE); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 5 декабря, 2015 Опубликовано 5 декабря, 2015 · Жалоба Ну потом еще надо включить сам сервис: #define MDNS_SERVICE_1 "PC1._ipp._tcp.local" #define MDNS_TEXT_1 "vendor=TI" #define MDNS_PORT_1 23 #define TTL 2000 #define UNIQUE_SERVICE 1 sl_NetAppStart(SL_NET_APP_MDNS_ID); sl_NetAppMDNSUnRegisterService(0, 0); sl_NetAppMDNSRegisterService(MDNS_SERVICE_1,pal_Strlen(MDNS_SERVICE_1),MDNS_TEXT_1,pal_Strlen(MDNS_TEXT_1),MDNS_PORT_1, TTL, UNIQUE_SERVICE); сделал так - ничего не выходит смотрю в роутере вместо имени стоит "?" т.е. имя не присвоилось. по ip адресу пингуется Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться