Golang tcp客户端服务器程序

I can do a server program or a client program, but I don't know how to do a client/server program. Does someone knows what's wrong with this code? Thanks.

package main

import (
    "net"
    "os"
    "bufio"
    "io"
)

func main() {
    listen, _ := net.Listen("tcp", "localhost:9001")


dial, _ := net.Dial("tcp", "localhost:9002")


scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
    conn, _ := listen.Accept()
    if scanner.Text() == "a"{
        conn.Close()
        listen.Close()
        dial.Close()
        break
    }
    dial.Write([]byte(scanner.Text()))

    io.Copy(os.Stdout, conn)
}

}

package main

import (
    "net"
    "sync"
    "log"
    "bufio"
    "os"
    "io"
    "time"
)

func receiveConn() net.Conn {
    for{
        xx, err := net.Dial("tcp", "localhost:9002")
        if err == nil{
            return xx
        }
        time.Sleep(1 * time.Second)
    }
}

var wg sync.WaitGroup

func main() {
    wg.Add(2)

    go func() {
        listen, err := net.Listen("tcp", "localhost:9001")
        if err != nil {
            log.Fatal(err)
        }
        defer listen.Close()

        for {
            conn, err := listen.Accept()
            defer conn.Close()
            if err != nil {
                log.Fatal(err)
            }

            io.Copy(os.Stdout, conn)

        }
    }()

    go func() {
        dial := receiveConn()

        defer dial.Close()
        scanner := bufio.NewScanner(os.Stdin)
        for scanner.Scan() {
            if scanner.Text() == "a"{
                dial.Write([]byte("Your mate has left the room"))
                break
            }
            dial.Write([]byte(scanner.Text() + "
"))
        }
    }()

    wg.Wait()
}

SOLVED!!!!