21. AX.25、NET/ROM、ROSE 网络编程

使用基于内核的业余无线电数据包协议实现的最大优势可能在于,您可以轻松地开发应用程序和程序来使用它们。

虽然 Unix 网络编程的主题超出了本文档的范围,但我将描述如何在您的软件中使用 AX.25、NET/ROM 和 ROSE 协议的基本细节。

21.1. 地址族

AX.25、NET/ROM 和 ROSE 的网络编程与 Linux 下的 TCP/IP 编程非常相似。 主要区别在于使用的地址族以及需要整理到位的地址结构。

AX.25、NET/ROM 和 ROSE 的地址族名称是AF_AX25, AF_NETROMAF_ROSE分别。

21.2. 头文件

您必须始终包含 `netax25/ax25.h' 头文件,以及 `netrom/netrom.h' 或 `netrose/rose.h' 头文件,如果您正在处理这些协议。 简单的顶层框架看起来像下面这样

对于 AX.25

#include <netax25/ax25.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_AX25

对于 NET/ROM

#include <netax25/ax25.h>
#include <netrom/netrom.h>
int s, addrlen = sizeof(struct full_sockaddr_ax25);
struct full_sockaddr_ax25 sockaddr;
sockaddr.fsa_ax25.sax25_family = AF_NETROM;

对于 ROSE

#include <netax25/ax25.h>
#include <netrose/rose.h>
int s, addrlen = sizeof(struct sockaddr_rose);
struct sockaddr_rose sockaddr;
sockaddr.srose_family = AF_ROSE;

21.3. 呼号处理和示例

lib/ax25.a库中,有一些例程可以管理您的呼号转换。 当然,如果您愿意,也可以编写自己的例程。

user_call 实用程序是很好的示例,您可以从中学习。 它们的源代码包含在 AX.25 实用程序包中。 如果您花一点时间研究这些示例,您很快就会发现,百分之九十的工作都涉及到准备打开套接字。 实际上,建立连接很容易,准备工作需要时间。

这些示例非常简单,不会让人感到困惑。 如果您有任何问题,请随时将它们发送到linux-hams邮件列表,那里会有人很乐意帮助您。