Skip to content

Instantly share code, notes, and snippets.

@abhishekkr
Last active January 29, 2025 10:12
Show Gist options
  • Save abhishekkr/3beebbc1db54b3b54914 to your computer and use it in GitHub Desktop.
Save abhishekkr/3beebbc1db54b3b54914 to your computer and use it in GitHub Desktop.

Revisions

  1. abhishekkr revised this gist Dec 10, 2014. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions tcp_client.go
    Original file line number Diff line number Diff line change
    @@ -31,6 +31,7 @@ func ReadNWrite(conn net.Conn) {
    fmt.Println("failed:", write_err)
    return
    }
    conn.(*net.TCPConn).CloseWrite()

    buf, read_err := ioutil.ReadAll(conn)
    if read_err != nil {
  2. abhishekkr created this gist Dec 10, 2014.
    41 changes: 41 additions & 0 deletions tcp_client.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,41 @@
    package main

    import (
    "fmt"
    "io/ioutil"
    "net"
    "os"
    )

    const (
    CONN_HOST = "localhost"
    CONN_PORT = "3333"
    CONN_TYPE = "tcp"
    )

    func main() {
    conn, err := net.Dial(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
    if err != nil {
    fmt.Println(err)
    os.Exit(1)
    }

    ReadNWrite(conn)
    conn.Close()
    }

    func ReadNWrite(conn net.Conn) {
    message := "Test Request\n"
    _, write_err := conn.Write([]byte(message))
    if write_err != nil {
    fmt.Println("failed:", write_err)
    return
    }

    buf, read_err := ioutil.ReadAll(conn)
    if read_err != nil {
    fmt.Println("failed:", read_err)
    return
    }
    fmt.Println(string(buf))
    }
    49 changes: 49 additions & 0 deletions tcp_server.go
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,49 @@
    package main

    import (
    "fmt"
    "io/ioutil"
    "net"
    "os"
    )

    const (
    CONN_HOST = "localhost"
    CONN_PORT = "3333"
    CONN_TYPE = "tcp"
    )

    func main() {
    l, err := net.Listen(CONN_TYPE, CONN_HOST+":"+CONN_PORT)
    if err != nil {
    fmt.Println("Error listening:", err.Error())
    os.Exit(1)
    }
    defer l.Close()
    fmt.Println("Listening on " + CONN_HOST + ":" + CONN_PORT)

    for {
    conn, err := l.Accept()
    if err != nil {
    fmt.Println("Error accepting: ", err.Error())
    os.Exit(1)
    }
    go handleRequest(conn)
    }
    }

    func handleRequest(conn net.Conn) {
    buf, read_err := ioutil.ReadAll(conn)
    if read_err != nil {
    fmt.Println("failed:", read_err)
    return
    }
    fmt.Println("Got: ", string(buf))

    _, write_err := conn.Write([]byte("Message received.\n"))
    if write_err != nil {
    fmt.Println("failed:", write_err)
    return
    }
    conn.Close()
    }