其他分享
首页 > 其他分享> > golang简单实现netbios远程查询机器名字

golang简单实现netbios远程查询机器名字

作者:互联网

package main

import (
	"fmt"
	"net"
)

func main() {
	// 创建连接
	socket, err := net.DialUDP("udp4", nil, &net.UDPAddr{
		IP:   net.IPv4(192, 168, 125, 68),
		Port: 137,
	})
	if err != nil {
		fmt.Println("连接失败!", err)
		return
	}
	defer socket.Close()
	// 发送数据
	senddata := []byte{0x80,0x94,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x43,0x4b,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x00,0x00,0x21,0x00,0x01}
	_, err = socket.Write(senddata)
	if err != nil {
		fmt.Println("发送数据失败!", err)
		return
	}
	// 接收数据
	data := make([]byte, 4096)
	fmt.Println("a")
	read, remoteAddr, err := socket.ReadFromUDP(data)
	if err != nil {
		fmt.Println("读取数据失败!", err)
		return
	}
	fmt.Println(read, remoteAddr)
	flag := 0
	for i := read - 1; i >= 0; i-- {
		if data[i] == 28 {
			flag = i
			break
		}

	}

	fmt.Println(data[:flag])
	fmt.Printf("%s\n",data[57:flag])


}

  

标签:err,fmt,0x00,golang,0x41,Println,data,远程,netbios
来源: https://www.cnblogs.com/yakoazz/p/14660764.html