当前位置: 首页>>代码示例>>Golang>>正文


Golang UDPConn.WriteMsgUDP方法代码示例

本文整理汇总了Golang中net.UDPConn.WriteMsgUDP方法的典型用法代码示例。如果您正苦于以下问题:Golang UDPConn.WriteMsgUDP方法的具体用法?Golang UDPConn.WriteMsgUDP怎么用?Golang UDPConn.WriteMsgUDP使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在net.UDPConn的用法示例。


在下文中一共展示了UDPConn.WriteMsgUDP方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: InverterFinder

func InverterFinder(c *net.UDPConn, address *net.UDPAddr) {

	log.Println("findInverters:sending wakeup message")
	for {
		_, _, err := c.WriteMsgUDP(protocol.Wakeup(), nil, address)
		checkError(err)

		time.Sleep(120 * time.Second)
	}
}
开发者ID:pee,项目名称:smapoller,代码行数:10,代码来源:network.go

示例2: handleQueryV2

func handleQueryV2(conn *net.UDPConn, addr *net.UDPAddr, buf []byte) {
	var pkt discover.Query
	err := pkt.UnmarshalXDR(buf)
	if err != nil {
		log.Println("QueryV2 Unmarshal:", err)
		log.Println(hex.Dump(buf))
		return
	}
	if debug {
		log.Printf("<- %v %#v", addr, pkt)
	}

	var id protocol.NodeID
	if len(pkt.NodeID) == 32 {
		// Raw node ID
		copy(id[:], pkt.NodeID)
	} else {
		id.UnmarshalText(pkt.NodeID)
	}

	lock.Lock()
	node, ok := nodes[id]
	queries++
	lock.Unlock()

	if ok && len(node.addresses) > 0 {
		ann := discover.Announce{
			Magic: discover.AnnouncementMagic,
			This: discover.Node{
				ID: pkt.NodeID,
			},
		}
		for _, addr := range node.addresses {
			ann.This.Addresses = append(ann.This.Addresses, discover.Address{IP: addr.ip, Port: addr.port})
		}
		if debug {
			log.Printf("-> %v %#v", addr, pkt)
		}

		tb := ann.MarshalXDR()
		_, _, err = conn.WriteMsgUDP(tb, nil, addr)
		if err != nil {
			log.Println("QueryV2 response write:", err)
		}

		lock.Lock()
		answered++
		lock.Unlock()
	}
}
开发者ID:BenKoerber,项目名称:syncthing,代码行数:50,代码来源:main.go

示例3: handleQueryV2

func handleQueryV2(conn *net.UDPConn, addr *net.UDPAddr, buf []byte) {
	var pkt discover.QueryV2
	err := pkt.UnmarshalXDR(buf)
	if err != nil {
		log.Println("QueryV2 Unmarshal:", err)
		log.Println(hex.Dump(buf))
		return
	}
	if debug {
		log.Printf("<- %v %#v", addr, pkt)
	}

	lock.Lock()
	node, ok := nodes[pkt.NodeID]
	queries++
	lock.Unlock()

	if ok && len(node.Addresses) > 0 {
		pkt := discover.AnnounceV2{
			Magic:  discover.AnnouncementMagicV2,
			NodeID: pkt.NodeID,
		}
		for _, addr := range node.Addresses {
			pkt.Addresses = append(pkt.Addresses, discover.Address{IP: addr.IP, Port: addr.Port})
		}
		if debug {
			log.Printf("-> %v %#v", addr, pkt)
		}

		tb := pkt.MarshalXDR()
		_, _, err = conn.WriteMsgUDP(tb, nil, addr)
		if err != nil {
			log.Println("QueryV2 response write:", err)
		}

		lock.Lock()
		answered++
		lock.Unlock()
	}
}
开发者ID:johntdyer,项目名称:golang-devops-stuff,代码行数:40,代码来源:main.go

示例4: writeToSessionUDP

// writeToSessionUDP acts just like net.UDPConn.WritetTo(), but uses a *sessionUDP instead of a net.Addr.
func writeToSessionUDP(conn *net.UDPConn, b []byte, session *sessionUDP) (int, error) {
	n, _, err := conn.WriteMsgUDP(b, session.context, session.raddr)
	return n, err
}
开发者ID:jjoergensen,项目名称:dns,代码行数:5,代码来源:udp.go

示例5: SendLogin

func SendLogin(c *net.UDPConn, address *net.UDPAddr) {

	_, _, err := c.WriteMsgUDP(protocol.GetLoginPacket(), nil, address)
	checkError(err)
}
开发者ID:pee,项目名称:smapoller,代码行数:5,代码来源:network.go


注:本文中的net.UDPConn.WriteMsgUDP方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。