Go 如何通过PacketConn.WriteTo发送数据包?
我想设置一个PacketConn接口,然后向用户输入的指定地址发送任意UDP消息。这是我的密码: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
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我会试试的,谢谢@蒂姆·库珀,这很有效!再次感谢!