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  }