Пример #1
0
// Set up a connection to myself via ephemeral ports
func SelfConnection() (net.Conn, net.Conn) {
	listener, err := net.Listen("tcp", ":0")
	if err != nil {
		log.Fatal("Could not set up listen: ", err)
	}
	defer listener.Close()

	inconnch := make(chan net.Conn)
	go func() {
		conn, err := listener.Accept()
		if err != nil {
			log.Fatal("Couldn't receive connection")
		}
		inconnch <- conn
	}()

	outconn, _ := net.Dial("tcp", listener.Addr().String())
	inconn := <-inconnch
	return inconn, outconn
}
Пример #2
0
func run() {
	defer func() {
		donech <- true
	}()

	conn, err := direct.Dial("http://localhost:8080/streamz")
	if err != nil {
		log.Fatal("failed to direct dial:", err)
	}
	ch := streamz.Channelify(conn)
	timeout := time.After(time.Duration(rand.Intn(10)) * time.Second)
	for s := range ch {
		select {
		case <-timeout:
			return
		default:
		}
		log.Print(s.Key, "=", s.Value)
	}
}