Пример ARM MBED CoAP с открытием порта

Я успешно создал пример протокола CoAP для ARM mbed (https://developer.mbed.org/teams/sandbox/code/coap-example/file/0681e205d0e9/) на плате K64F. Он идет из коробки, за исключением того, что имя сервера (coap.me) изменено на внутренний IP-адрес.

Я вижу, что он работает правильно и подключается к сети:

[EasyConnect] Using Ethernet
[EasyConnect] Connected to Network successfully
[EasyConnect] IP address 192.168.1.15
[EasyConnect] MAC address 0e:43:54:d9:7c:71
Connected to the network. Opening a socket...
Calculated message length: 11 bytes
Starting server
Sent 11 bytes to coap://192.168.1.10:5683

Я установил компьютер, который может подключиться к нему. Он может правильно пинговать плату, и я вижу, что ARP согласовывает правильный MAC-адрес.

Я запустил тест NMAP и вижу, что порт закрыт:

PORT     STATE     SERVICE
5683/udp closed    unknown

Если я устанавливаю клиент CoAP на компьютере (медь), я не вижу соединения в терминале.

Что мне не хватает?


person jordi    schedule 21.03.2017    source источник
comment
Где сообщение теряется? Компьютер не получает запрос или плата не получает ответ? coap-example тестируется только с устройством -> сервером -> устройством, а не сервером -> устройством -> сервером...   -  person Jan Jongboom    schedule 21.03.2017
comment
Board -> Computer message приходит (у меня на нем нет сервера, но tcpdump его видит)   -  person jordi    schedule 21.03.2017
comment
Компьютер -> Бортовое сообщение не получено. (Я не вижу следов на терминале)   -  person jordi    schedule 21.03.2017
comment
Плата -> Плата (две разные платы с одним и тем же примером) - я не вижу следов связи ни с одной стороны   -  person jordi    schedule 21.03.2017
comment
Насколько я понимаю, пример просто отправляет сообщение на сервер и получает ответ. Чтобы создать сервер, мне нужно открыть порт с помощью socket.bind(5683). Это то, чего мне не хватает?   -  person jordi    schedule 21.03.2017
comment
Да, я думаю, что для вызова UDP bind(), а затем наличия хука recvfrom достаточно...   -  person Jan Jongboom    schedule 21.03.2017
comment
Оно работает. Я сейчас над следующей проблемой.   -  person jordi    schedule 21.03.2017


Ответы (1)


Переместите это также в раздел ответов на случай, если кто-то еще столкнется с этой проблемой.

Если вы хотите использовать устройство mbed OS 5 в качестве сервера UDP, обязательно вызовите .bind() в сокете.

person Jan Jongboom    schedule 21.03.2017
comment
socket.bind(5683); - person jordi; 22.03.2017