Перейти к содержанию
    

Как задать имя хоста?

Не совсем понятно в какую ветку мне поместить вот такой вопрос:

 

делаю прогу во 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 адреса к нему можно было бы обратиться по имени?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем, как мне сделать так, что бы не зная IP адреса к нему можно было бы обратиться по имени?

2 шага нужно сделать.

1) На роутере нужно закрепить фиксированный IP-адрес за конкретным клиентом (статическая таблица DHCP), если роутер это умеет.

2) Если хотите обращаться к серверу по имени - вам нужен DNS-сервер. Где он будет находиться - в роутере, или ещё где-то в сети, - отдельный вопрос. IP-адрес этого DNS-сервера нужно будет указать в настройках сетевого соединения клиента, с которого пойдут запросы к серверу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 шага нужно сделать.

1) На роутере нужно закрепить фиксированный IP-адрес за конкретным клиентом (статическая таблица DHCP), если роутер это умеет.

2) Если хотите обращаться к серверу по имени - вам нужен DNS-сервер. Где он будет находиться - в роутере, или ещё где-то в сети, - отдельный вопрос. IP-адрес этого DNS-сервера нужно будет указать в настройках сетевого соединения клиента, с которого пойдут запросы к серверу.

т.е. на стороне своей платы это не сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. на стороне своей платы это не сделать?

 

А что в API сс3200 нет mDNS?

Странно, на CC3100 есть.

 

На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то.

Под Android mDNS тоже работает как родной. С iOS тоже все понятно.

 

Вообщем нет никаких проблем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что в API сс3200 нет mDNS?

Странно, на CC3100 есть.

 

На стороне PC c Windows 7 должен быть запущен сервис Bonjour. В 10-ке он уже вроде штатный. У меня в 7-ке уже был откуда-то.

Под Android mDNS тоже работает как родной. С iOS тоже все понятно.

 

Вообщем нет никаких проблем.

нашел этот микро DNA в примерах (микро надеюсь)

а как он работает, кто то может объяснить на пальцах?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нашел этот микро DNA в примерах (микро надеюсь)

а как он работает, кто то может объяснить на пальцах?

 

А оно интересно? Главное что этим способом транслируется имя дивайса всей сети.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А оно интересно? Главное что этим способом транслируется имя дивайса всей сети.

запустил эту прогу, но что то ничего не получилось

 

 

#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

но почему то на пинг ничего не отзывается

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

насколько понимаю теперь имя должно быть 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, имя задается вызовом функции 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?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробоввал - ничего не выходит

а как правильно вызвать эту функцию,

нужно ли перед ней вызывать 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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну потом еще надо включить сам сервис:

 

#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 адресу пингуется

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...