|
|
  |
Как задать имя хоста? |
|
|
|
Dec 3 2015, 06:25
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Не совсем понятно в какую ветку мне поместить вот такой вопрос:
делаю прогу во 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 адреса к нему можно было бы обратиться по имени?
|
|
|
|
|
Dec 3 2015, 06:48
|
Знающий
   
Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088

|
Цитата(inventor @ Dec 3 2015, 09:25)  Вобщем, как мне сделать так, что бы не зная IP адреса к нему можно было бы обратиться по имени? 2 шага нужно сделать. 1) На роутере нужно закрепить фиксированный IP-адрес за конкретным клиентом (статическая таблица DHCP), если роутер это умеет. 2) Если хотите обращаться к серверу по имени - вам нужен DNS-сервер. Где он будет находиться - в роутере, или ещё где-то в сети, - отдельный вопрос. IP-адрес этого DNS-сервера нужно будет указать в настройках сетевого соединения клиента, с которого пойдут запросы к серверу.
--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
|
|
|
|
|
Dec 3 2015, 08:18
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(inventor @ Dec 3 2015, 09:48)  т.е. на стороне своей платы это не сделать? А что в API сс3200 нет mDNS? Странно, на CC3100 есть. На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то. Под Android mDNS тоже работает как родной. С iOS тоже все понятно. Вообщем нет никаких проблем.
|
|
|
|
|
Dec 3 2015, 09:08
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(AlexandrY @ Dec 3 2015, 11:18)  А что в API сс3200 нет mDNS? Странно, на CC3100 есть.
На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то. Под Android mDNS тоже работает как родной. С iOS тоже все понятно.
Вообщем нет никаких проблем. нашел этот микро DNA в примерах (микро надеюсь) а как он работает, кто то может объяснить на пальцах?
|
|
|
|
|
Dec 3 2015, 13:40
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(AlexandrY @ Dec 3 2015, 12:54)  А оно интересно? Главное что этим способом транслируется имя дивайса всей сети. запустил эту прогу, но что то ничего не получилось CODE #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 но почему то на пинг ничего не отзывается
|
|
|
|
|
Dec 4 2015, 13:46
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(AlexandrY @ Dec 3 2015, 20:45)  Нет, имя задается вызовом функции 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?
|
|
|
|
|
Dec 4 2015, 22:13
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(inventor @ Dec 4 2015, 15:46)  попробоввал - ничего не выходит а как правильно вызвать эту функцию, нужно ли перед ней вызывать 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);
|
|
|
|
|
Dec 5 2015, 17:05
|
Знающий
   
Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748

|
Цитата(AlexandrY @ Dec 5 2015, 01:13)  Ну потом еще надо включить сам сервис: Код #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 адресу пингуется
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|