使用Golang编写的基于TCP协议的客户端与服务端通信

warning: 这篇文章距离上次修改已过192天,其中的内容可能已经有所变动。

使用Golang编写的基于TCP协议的客户端与服务端通信
使用了net,bufio,fmt,os,strings包
Server

package main

import (
    "fmt"
    "net"
)

func main() {
    fmt.Println("Starting the server ...")
    listener, err := net.Listen("tcp", "localhost:5000")
    if err != nil {
        fmt.Println("Error listening", err.Error())
        return
    }
    for {
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("Errpr accepting", err.Error())
            return
        }
        go doServerStuff(conn)
    }
}
func doServerStuff(conn net.Conn) {
    for {
        buf := make([]byte, 512)
        len, err := conn.Read(buf)
        if err != nil {
            fmt.Println("Error reading", err.Error())
            return
        }
        fmt.Printf("Received data: %v", string(buf[:len]))
    }
}


Client

package main

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

func main() {
    conn, err := net.Dial("tcp", "localhost:5000")
    if err != nil {
        fmt.Println("Error dialing", err.Error())
        return
    }
    inputReader := bufio.NewReader(os.Stdin)
    fmt.Println("First, what is your name?")
    clientName, _ := inputReader.ReadString('n')
    trimmedClient := strings.Trim(clientName, "rn")
    for {
        fmt.Println("What to send to the server? type Q to quit.")
        input, _ := inputReader.ReadString('n')
        trimmedInput := strings.Trim(input, "rn")
        if trimmedInput == "Q" {
            return
        }
        _, err = conn.Write([]byte(trimmedClient + "says:" + trimmedInput))
    }
}

none
最后修改于:2021年11月06日 22:32

添加新评论

召唤看板娘