github.com/ActiveState/go@v0.0.0-20170614201249-0b81c023a722/src/net/example_test.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package net_test 6 7 import ( 8 "fmt" 9 "io" 10 "log" 11 "net" 12 ) 13 14 func ExampleListener() { 15 // Listen on TCP port 2000 on all interfaces. 16 l, err := net.Listen("tcp", ":2000") 17 if err != nil { 18 log.Fatal(err) 19 } 20 defer l.Close() 21 for { 22 // Wait for a connection. 23 conn, err := l.Accept() 24 if err != nil { 25 log.Fatal(err) 26 } 27 // Handle the connection in a new goroutine. 28 // The loop then returns to accepting, so that 29 // multiple connections may be served concurrently. 30 go func(c net.Conn) { 31 // Echo all incoming data. 32 io.Copy(c, c) 33 // Shut down the connection. 34 c.Close() 35 }(conn) 36 } 37 } 38 39 func ExampleIPv4() { 40 fmt.Println(net.IPv4(8, 8, 8, 8)) 41 42 // Output: 43 // 8.8.8.8 44 } 45 46 func ExampleParseCIDR() { 47 ipv4Addr, ipv4Net, err := net.ParseCIDR("192.0.2.1/24") 48 if err != nil { 49 log.Fatal(err) 50 } 51 fmt.Println(ipv4Addr) 52 fmt.Println(ipv4Net) 53 54 ipv6Addr, ipv6Net, err := net.ParseCIDR("2001:db8:a0b:12f0::1/32") 55 if err != nil { 56 log.Fatal(err) 57 } 58 fmt.Println(ipv6Addr) 59 fmt.Println(ipv6Net) 60 61 // Output: 62 // 192.0.2.1 63 // 192.0.2.0/24 64 // 2001:db8:a0b:12f0::1 65 // 2001:db8::/32 66 } 67 68 func ExampleParseIP() { 69 fmt.Println(net.ParseIP("192.0.2.1")) 70 fmt.Println(net.ParseIP("2001:db8::68")) 71 fmt.Println(net.ParseIP("192.0.2")) 72 73 // Output: 74 // 192.0.2.1 75 // 2001:db8::68 76 // <nil> 77 } 78 79 func ExampleIP_DefaultMask() { 80 ip := net.ParseIP("192.0.2.1") 81 fmt.Println(ip.DefaultMask()) 82 83 // Output: 84 // ffffff00 85 } 86 87 func ExampleIP_Mask() { 88 ipv4Addr := net.ParseIP("192.0.2.1") 89 // This mask corresponds to a /24 subnet for IPv4. 90 ipv4Mask := net.CIDRMask(24, 32) 91 fmt.Println(ipv4Addr.Mask(ipv4Mask)) 92 93 ipv6Addr := net.ParseIP("2001:db8:a0b:12f0::1") 94 // This mask corresponds to a /32 subnet for IPv6. 95 ipv6Mask := net.CIDRMask(32, 128) 96 fmt.Println(ipv6Addr.Mask(ipv6Mask)) 97 98 // Output: 99 // 192.0.2.0 100 // 2001:db8:: 101 } 102 103 func ExampleCIDRMask() { 104 // This mask corresponds to a /31 subnet for IPv4. 105 fmt.Println(net.CIDRMask(31, 32)) 106 107 // This mask corresponds to a /64 subnet for IPv6. 108 fmt.Println(net.CIDRMask(64, 128)) 109 110 // Output: 111 // fffffffe 112 // ffffffffffffffff0000000000000000 113 } 114 115 func ExampleIPv4Mask() { 116 fmt.Println(net.IPv4Mask(255, 255, 255, 0)) 117 118 // Output: 119 // ffffff00 120 }