| // Copyright 2012 The Go Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | package net_test | 
 |  | 
 | import ( | 
 | 	"io" | 
 | 	"log" | 
 | 	"net" | 
 | ) | 
 |  | 
 | func ExampleListener() { | 
 | 	// Listen on TCP port 2000 on all interfaces. | 
 | 	l, err := net.Listen("tcp", ":2000") | 
 | 	if err != nil { | 
 | 		log.Fatal(err) | 
 | 	} | 
 | 	defer l.Close() | 
 | 	for { | 
 | 		// Wait for a connection. | 
 | 		conn, err := l.Accept() | 
 | 		if err != nil { | 
 | 			log.Fatal(err) | 
 | 		} | 
 | 		// Handle the connection in a new goroutine. | 
 | 		// The loop then returns to accepting, so that | 
 | 		// multiple connections may be served concurrently. | 
 | 		go func(c net.Conn) { | 
 | 			// Echo all incoming data. | 
 | 			io.Copy(c, c) | 
 | 			// Shut down the connection. | 
 | 			c.Close() | 
 | 		}(conn) | 
 | 	} | 
 | } |