我尝试过使用xlp并且也遵循这个graphviz线程(http://www.graphviz.org/content/how-use-xlp-attribute-positioning-external-labels-xlabel),但两者都没有实际工作.
这是我的点代码:
digraph {
forcelabels=true;
rankdir=LR;
graph[ranksep=1,nodesep=.5];
node[shape=box];
"start" [xlabel="start",xlp="0,0",shape=doublecircle,label=" "];
"requested"->"fault";
"requested"->"progress";
"start"->"requested";
"progress"->"fault";
"progress"->"progress";
"progress"->"complete";
"fault" [xlabel="fault",shape=doublecircle,label=" "];
"complete" [xlabel="complete",shape=doublecircle,label=" "];
}
Run Code Online (Sandbox Code Playgroud)
这就是它的样子:
理想情况下,start,fault和complete将直接位于节点之下,但我似乎无法正确定位xlabels.
我想要做的是侦听 IPv6 的以太网帧并响应特定端口上的 UDP 调用。
我能够捕获我关心的以太网帧并解析出 UDP 有效负载,但是当我尝试回显该有效负载时,我遇到了问题。这是我的“服务器”代码:
func main() {
fd, err := syscall.Socket(syscall.AF_PACKET, syscall.SOCK_RAW, int(htons(syscall.ETH_P_IPV6)))
iface, err := net.InterfaceByName("lo")
if err != nil {
log.Fatal(err)
}
err = syscall.BindToDevice(fd, iface.Name)
if err != nil {
log.Fatal(err)
}
for {
buf := make([]byte, iface.MTU)
n, callerAddr, err := syscall.Recvfrom(fd, buf, 0)
if err != nil {
log.Fatal(err)
}
data := buf[:n]
packet := gopacket.NewPacket(data, layers.LayerTypeEthernet, gopacket.Default)
udpPacket := packet.Layer(layers.LayerTypeUDP)
if udpPacket != nil {
udpPck, _ := udpPacket.(*layers.UDP)
// …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个可以同时充当gatt连接的客户端和服务器的应用程序,但是每次运行服务器时,我都会获得一个未知状态和断开连接的状态,同时它表现为客户端.
这是现在的过程:
1)启动一部电话作为服务器(Phone1)
2)启动另一部手机作为客户端(Phone2)
3)将Phone2连接到Phone1并接收有关当前时间的通知更新.
4)在Phone2上启动服务器gatt服务器,这是我获得蓝牙gatt回调的未知状态的地方.首先它断开Phone2与Phone1的连接(打破gatt连接),然后Phone2的onConnectionStateChange为BluetoothGattCallBack返回断开状态和状态码19.
我不确定是什么导致这个,但两款手机都是相同的摩托罗拉XT1526 API 22级.是否可能这是一个硬件问题,手机不能同时作为gatt服务器和客户端?我也尝试在同一部手机的客户端和服务器上使用一个蓝牙适配器对象,还尝试使用两个独立的蓝牙适配器对象.任何帮助将不胜感激.