What version of Go are you using (go version)?
go1.8.windows-386
What operating system and processor architecture are you using (go env)?
windows xp x86 32bit running in virtualbox.
What did you do?
I start 164 server sockets, listening from TCP addr 127.0.0.1:13000 to 127.0.0.1:13163.
i only got 162 sockets listened ok, 2 failed.
error info : " listen: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full".
but, i wrote another C++ program, do the same thing, and this C++ program can successfully listen on 500 socket ports
the source code:
func ListenMany() {
for i := 0; i < 164; i++ {
go func(i int) {
serverAddr, err := net.ResolveTCPAddr(“tcp”, fmt.Sprintf(“127.0.0.1:%d”, i+13000))
if err != nil {
return
}
_, err = net.ListenTCP("tcp", serverAddr)
if err != nil {
fmt.Println("listen ", serverAddr, "failed", err)
}
}(i)
}
time.Sleep(time.Second * 10)
}
i find a solution to the go grogram by setting registry:
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 65534
then the the Go program can listen on 500 TCP ports.
but this need to reboot the windows xp. and i don’t want user to reboot.