package main
import (
"fmt"
"net"
"strconv"
"time"
)
func main() {
var serverAddr = "127.0.0.1:10080"
// 创建一个UDP地址
udpAddr, err := net.ResolveUDPAddr("udp", serverAddr)
if err != nil {
fmt.Println("Error resolving address:", err)
return
}
// 创建接收端,绑定到任意可用端口
connRecv, err := net.ListenUDP("udp", &net.UDPAddr{Port: 10080, IP: net.ParseIP("127.0.0.1")})
if err != nil {
fmt.Println("Error listening:", err)
return
}
defer connRecv.Close()
// 启动一个goroutine来接收数据
go func() {
buf := make([]byte, 1024)
for {
n, _, err := connRecv.ReadFromUDP(buf)
if err != nil {
fmt.Println("Error reading from UDP:", err)
continue
}
fmt.Printf("Received: %s\n", string(buf[:n]))
}
}()
// 创建发送端,连接到目标地址
connSend, err := net.DialUDP("udp", nil, udpAddr)
if err != nil {
fmt.Println("Error dialing:", err)
return
}
defer connSend.Close()
for i := 0; i < 50000; i++ {
// 发送数据
message := []byte("Hello from client " + strconv.Itoa(i))
_, err = connSend.Write(message)
if err != nil {
fmt.Println("Error sending data:", err)
return
}
time.Sleep(time.Microsecond)
}
// 等待一段时间,让接收端有时间接收数据
time.Sleep(time.Second * 15)
}
上面是go语言的问题:
本机的windows10 系统 Error reading from UDP: read udp 127.0.0.1:10080: wsarecvfrom: The system cannot find the file specified. 但在另外一个windows10 上是正常的请问为什么呢?
情况: 在本机使用PHP的socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); 是可以的,就是go用上面的代码编译就是有 Error reading from UDP: read udp 127.0.0.1:10080: wsarecvfrom: The system cannot find the file specified. 。