Intel Galileo gen で COAP および DTLS と通信できるように、FreeCoap ( https://github.com/keith-cullen/FreeCoAP ) を実行しようとしています。2ボード。すぐに使用できるテストが正しくコンパイルおよび実行されることを確認しました (これまでにテストできた限り)。
IPv6 で実行する準備ができていることがわかりました。私はそれについての専門家ではありませんが、ホストの値が::1として構成されていることを確認しました。私が理解しているのはローカルホストです。IPv4、つまり 127.0.0.1 またはボードの実際の IP アドレスに変更しようとすると、エラーが発生します。
netdb.h を使用してサーバーを作成することがわかりました。
#include <netdb.h>
...
#define HOST "127.0.0.1" /**< Host address to listen on */
#define PORT "12436"
...
unsigned char msg_id[2] = {0};
struct addrinfo hints = {0};
struct addrinfo *list = NULL;
struct addrinfo *node = NULL;
hints.ai_flags = 0;
hints.ai_family = AF_INET; /* value = 2 preferred socket domain */
hints.ai_socktype = SOCK_DGRAM; /* value = 3 preferred socket type */
hints.ai_protocol = 0; /* preferred protocol (3rd argument to socket()) - 0 specifies that any protocol will do */
hints.ai_addrlen = 0; /* must be 0 */
hints.ai_addr = NULL; /* must be NULL */
hints.ai_canonname = NULL; /* must be NULL */
hints.ai_next = NULL; /* must be NULL */
ret = getaddrinfo(HOST, PORT, &hints, &list);
getaddrinfo の結果として、次のエラーを示す -16 値が得られます。
Error : Device or resource busy
で検索してみましたnetstat -a
が、そのようなポートは使用されていません。
私は何が欠けていますか?ビジー状態でアドレスを取得できないリソースは?