使用基于内核的业余无线电数据包协议实现的最大优势可能在于,您可以轻松地开发应用程序和程序来使用它们。
虽然 Unix 网络编程的主题超出了本文档的范围,但我将描述如何在您的软件中使用 AX.25、NET/ROM 和 ROSE 协议的基本细节。
AX.25、NET/ROM 和 ROSE 的网络编程与 Linux 下的 TCP/IP 编程非常相似。 主要区别在于使用的地址族以及需要整理到位的地址结构。
AX.25、NET/ROM 和 ROSE 的地址族名称是AF_AX25, AF_NETROM和AF_ROSE分别。
您必须始终包含 `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; |
在lib/ax25.a库中,有一些例程可以管理您的呼号转换。 当然,如果您愿意,也可以编写自己的例程。
user_call 实用程序是很好的示例,您可以从中学习。 它们的源代码包含在 AX.25 实用程序包中。 如果您花一点时间研究这些示例,您很快就会发现,百分之九十的工作都涉及到准备打开套接字。 实际上,建立连接很容易,准备工作需要时间。
这些示例非常简单,不会让人感到困惑。 如果您有任何问题,请随时将它们发送到linux-hams邮件列表,那里会有人很乐意帮助您。