首页 > 解决方案 > 如何在 Linux 上接收 AX.25 UI 帧?

问题描述

尽我所能,我就是无法让它发挥作用。

// create socket
int sock = socket(AF_AX25, SOCK_DGRAM, 0);

// bind.
struct full_sockaddr_ax25 me;
me.fsa_ax25.sax25_family = AF_AX25;
ax25_aton("M0ABC-1", &me);
bind(sock, reinterpret_cast<struct sockaddr*>(&me), sizeof(me));

// receive packet
struct full_sockaddr_ax25 sa{};
std::array<char, 4196> buf;
socklen_t salen = sizeof(sa);
auto rc = recvfrom(sock, buf.data(), buf.size(), 0, reinterpret_cast<struct sockaddr*>(&sa), &salen);

(加上错误处理,所以这不是问题)

发生的情况是,即使我看到 UI 框架axlisten -cart recvfrom()永远不会返回。

发送工作正常,并显示在另一侧axlisten,但不在应用程序中:

struct full_sockaddr_ax25 sa{};
ax25_aton("M0ABC-1", &sa);
auto rc = sendto(sock, msg.data(), msg.size(), 0, reinterpret_cast<struct sockaddr*> (&sa),
    sizeof(sa));

这一切都适用于SOCK_SEQPACKET

标签: linuxsocketsradio

解决方案


推荐阅读