我正在尝试使用Go打开一个RFCOMM套接字。我有一个测试环境,客户端连接到回显服务器。我遇到困难的部分是设置蓝牙地址。在C中,您可以使用str2ba将MAC字符串转换为包含六个元素的字节数组。在Go中,它似乎希望该设备为uint16。我不确定这该如何工作。
package main
import (
"fmt"
"log"
"syscall"
"golang.org/x/sys/unix"
)
func main() {
fd, err := unix.Socket(syscall.AF_BLUETOOTH, syscall.SOCK_STREAM, unix.BTPROTO_RFCOMM)
if err != nil {
log.Fatalf("%v\n", err)
}
addr := unix.SockaddrHCI{Dev: 1, Channel: 1}
unix.Connect(fd, addr)
unix.Write(fd, []byte("Hello"))
var data []byte
unix.Read(fd, data)
fmt.Printf("Received: %v\n", string(data))
}
unix.SockaddrHCI
中的 Dev
成员是 uint16 类型,我认为这是用来表示蓝牙 MAC 地址的。这个理解正确吗?谢谢。