• 打卡go学习第一天


    在这里插入图片描述

    8.1
    下面展示一些 代码

    package main
    
    import (
    	"fmt"
    	"net"
    	"os"
    	"time"
    )
    
    type Clock struct {
    	Name   string
    	Addr   string
    }
    func main() {
    	clocks := []Clock{
    		{Name: "New York", Addr: "localhost:8000"},
    		{Name: "London", Addr: "localhost:8001"},
    		{Name: "Tokyo", Addr: "localhost:8002"},
    	}
    
    	fmt.Printf("%-15s %s\n", "Location", "Time")
    
    	for _, clock := range clocks {
    		conn, err := net.Dial("tcp", clock.Addr)
    		if err != nil {
    			fmt.Fprintf(os.Stderr, "Error connecting to %s: %v\n", clock.Name, err)
    			continue
    		}
    		defer conn.Close()
    
    		// 读取服务器发送的时间
    		var timeStr string
    		_, err = fmt.Fscan(conn, &timeStr)
    		if err != nil {
    			fmt.Fprintf(os.Stderr, "Error reading time from %s: %v\n", clock.Name, err)
    			continue
    		}
    
    		// 解析时间
    		t, err := time.Parse(time.RFC3339, timeStr)
    		if err != nil {
    			fmt.Fprintf(os.Stderr, "Error parsing time from %s: %v\n", clock.Name, err)
    			continue
    		}
    
    		fmt.Printf("%-15s %s\n", clock.Name, t.Format(time.RFC3339))
    	}
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    8.2
    下面展示一些 代码

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"net"
    	"os"
    	"strings"
    )
    
    func handleClient(conn net.Conn) {
    	defer conn.Close()
    
    	reader := bufio.NewReader(conn)
    	writer := bufio.NewWriter(conn)
    
    	for {
    		// 读取客户端发送的命令
    		cmd, err := reader.ReadString('\n')
    		if err != nil {
    			fmt.Println("Error reading command:", err)
    			return
    		}
    
    		// 去除命令中的空白字符
    		cmd = strings.TrimSpace(cmd)
    
    		// 解析并处理命令
    		switch cmd {
    		case "cd":
    			// 处理 cd 命令
    			_, err := writer.WriteString("Change directory command executed.\n")
    			if err != nil {
    				fmt.Println("Error writing response:", err)
    				return
    			}
    			writer.Flush()
    		case "quit":
    			// 处理退出命令
    			return
    		default:
    			_, err := writer.WriteString("Unknown command.\n")
    			if err != nil {
    				fmt.Println("Error writing response:", err)
    				return
    			}
    			writer.Flush()
    		}
    	}
    }
    
    func main() {
    	listener, err := net.Listen("tcp", ":2121")
    	if err != nil {
    		fmt.Println("Error starting server:", err)
    		return
    	}
    
    	defer listener.Close()
    
    	fmt.Println("Server started, waiting for connections...")
    
    	for {
    		conn, err := listener.Accept()
    		if err != nil {
    			fmt.Println("Error accepting connection:", err)
    			continue
    		}
    
    		go handleClient(conn)
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
  • 相关阅读:
    C/C++输出绝对值 2019年9月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
    JavaWeb ThreadLocal 的使用
    gif动图表情包如何制作?教你一键生成gif表情包
    LeetCode——字符串(Java)
    MFC 绘图
    DOM与BOM
    RK3128适配RTL8723DU
    高性能MySQL实战第07讲:如何提高查询性能?
    Vue3 学习笔记 —— 破坏式更新、自定义指令 directive
    记一次线上 Spring CPU 高负载的解决思路
  • 原文地址:https://blog.csdn.net/qq_44231964/article/details/133927379