Go 如何通过PacketConn.WriteTo发送数据包?

Go 如何通过PacketConn.WriteTo发送数据包?,go,network-programming,Go,Network Programming,我想设置一个PacketConn接口,然后向用户输入的指定地址发送任意UDP消息。这是我的密码: package main import ( "fmt" "net" "time" ) //Make a type that implemets https://golang.org/pkg/net/#Addr type remoteAddress struct { myAddress string } f

我想设置一个PacketConn接口,然后向用户输入的指定地址发送任意UDP消息。这是我的密码:

package main
import (
    "fmt"
    "net"
    "time"
)

//Make a type that implemets https://golang.org/pkg/net/#Addr
type remoteAddress struct {
    myAddress string
}

func (r remoteAddress) Network() string {
    return "udp"
}

func (r remoteAddress) String() string {
    return r.myAddress
}

func writePeer(pc net.PacketConn, addr net.Addr){
    for{
        if _, err := pc.WriteTo([]byte("hi"), addr); err != nil {
            panic(err)
        }

        time.Sleep(time.Second/3)
    }
}

func main(){
    pc, err := net.ListenPacket("udp", ":0")
    if err != nil {
        fmt.Println(err)
    }

    var userInput remoteAddress
    userInput.myAddress = "99.84.243.36:80"

    go writePeer(pc, userInput)

    select{}

}
当程序运行时,我得到一个错误:
panic:write udp[:]:57057->99.84.243.36:80:无效参数
我的代码有什么问题?

以下是工作代码:

package main
import (
    "fmt"
    "net"
    "time"
)



func writePeer(pc net.PacketConn, addr net.Addr){
    for{
        if _, err := pc.WriteTo([]byte("hi"), addr); err != nil {
            panic(err)
        }

        time.Sleep(time.Second/3)
    }
}

func main(){
    pc, err := net.ListenPacket("udp", ":0")
    if err != nil {
        fmt.Println(err)
    }

    userInput, err := net.ResolveUDPAddr("udp", "99.84.243.36:80")

    go writePeer(pc, userInput)

    select{}

}

不要实现自己的
net.Addr
类型。使用。@TimCooper我会试试的,谢谢@蒂姆·库珀,这很有效!再次感谢!