GoTalk / client.go

package main

import (
        "fmt"
        "os"
        "net"
        "bufio"
        "strings"
)

func Log(v ...interface{}) {
    fmt.Println(v...)
}


func ServerHandler(connection net.Conn) {
    // Wait for messages from the server
    for {
        buffer := make([]byte, 1024)
        bytesRead, error := connection.Read(buffer)
        if error != nil {
            Log("connection error: ", error)
        }
        message := string(buffer[0:bytesRead])
        fmt.Println(message)
    }
}

// Main: connects to a TCP server and ask to the client for inputs
func main() {
    
    // Open connection
    conn, err := net.Dial("tcp", "localhost:9988")
    if err != nil {
        fmt.Println("Error", err.Error())
        return // terminate program
    }

    go ServerHandler(conn)

    inputReader := bufio.NewReader(os.Stdin)
    fmt.Println("Please give yourname. Type Q to quit.")
    clientName, _ := inputReader.ReadString('\n')
    trimmedInput := strings.Trim(clientName, "\n")

    for {
        _, err = conn.Write([]byte(trimmedInput))
        fmt.Print("you> ")
        input, _ := inputReader.ReadString('\n')
        trimmedInput = strings.Trim(input, "\n")

        if trimmedInput == "Q" {
            return
        }

        
    }
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.