Ah, hell. Sorry, sorry, sorry. "[::]" is just ipv6 version of "0.0.0.0". Okay. Hah, and I can to use "[::0:0:1]:9090" or "[::0:1]:9090" or "[::1]:9090" and it will work. Hah, thank you man! Thank for you time.
воскресенье, 4 июня 2017 г., 18:32:42 UTC+3 пользователь Silviu Capota Mera написал: > > Hi > > I think you wanted return ahost == bhost (instead of aport == bport) > inside the addrCmp function, right ? Because the client is always assigned > a random port for a TCP connection > > And of course, you will have to compare at nc (net.Conn) level, not at > listener level, especially when listening on a generic [::] > > e.g. > go func() { > for { > nc, err := l.Accept() > if err != nil { > log.Fatal("accept fatal: ", err) > } > // This is the address you need to compare with > connectionSpecificAddr := nc.LocalAddr().String() > connRemoteAddr := nc.RemoteAddr().String() > fmt.Println("Listener local addr: ", connectionSpecificAddr) > fmt.Println("Listener remote addr: ", connRemoteAddr) > fmt.Println(addrCmp(connectionSpecificAddr, connRemoteAddr)) > > } > }() > > Cheers, > Silviu > > > > On Saturday, 3 June 2017 23:29:24 UTC-4, Константин Иванов wrote: >> >> Here is a code: >> >> package main >> >> import ( >> "fmt" >> "log" >> "net" >> ) >> >> func main() { >> >> l, err := net.Listen("tcp", "[::]:9090") >> if err != nil { >> log.Fatal(err) >> } >> defer l.Close() >> >> go func() { >> for { >> l.Accept() >> } >> }() >> >> c, err := net.Dial("tcp", "[::]:9090") >> if err != nil { >> log.Fatal(err) >> } >> defer c.Close() >> >> fmt.Println(l.Addr().String()) >> fmt.Println(c.RemoteAddr().String()) >> >> fmt.Println(addrCmp(l.Addr().String(), c.RemoteAddr().String())) >> } >> >> func addrCmp(a, b string) bool { >> if ahost, aport, err := net.SplitHostPort(a); err == nil { >> if bhost, bport, err := net.SplitHostPort(b); err == nil { >> if net.ParseIP(ahost).Equal(net.ParseIP(bhost)) { >> return aport == bport >> } >> } >> } >> return false >> } >> >> Output is: >> >> [::]:9090 >> [::1]:9090 >> false >> >> Is there an easy way to compare two net.Addr or two strings that >> represents network addresses? >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.