打卡go学习第一天

news2024/11/20 2:23:53

在这里插入图片描述

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))
	}
}

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)
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112205.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

笔记39:在Pycharm中为项目添加新解释器

很久不用pycharm都生疏了 a a a 第一步:创建虚拟环境 略 a a a 第二步:将虚拟环境应用到项目中去 【File】----【Settings】----【Project:~~~】-----【Project Interpreter】----【选择合适的解释器】 ​​​​​​​ 因为我们要用新的解释…

【OpenCV概念】 11— 对象检测

一、说明 这都是关于物体识别的。物体识别是指通过计算机视觉技术,自动识别图像或视频中的物体及其属性和特征,是人工智能领域的一个分支。物体识别可应用于多个领域,包括工业自动化、智能家居、医疗、安防等。请随时阅读这篇文章&#xff1a…

摩尔信使MThings的实时数据曲线

摩尔信使MThings配备了毫秒级的实时数据录波功能,提供了多种展示模式,包括:固定时间范围、示波器等; 用户可以添加实时数据警戒线,直观呈现异常数据; 用户可以灵活的缩放、拖动曲线数据,可以指…

nodejs+vue衣服穿搭推荐系统-计算机毕业设计

模块包括主界面,系统首页、个人中心、用户管理、风格标签管理、衣服分类管理、衣服穿搭管理、服装信息管理、我的搭配管理、用户反馈、系统管理等进行相应的操作。无论是日常生活,还是特定场景,诸如面试、约会等,人们都有展现自我…

【试题028】C语言关于逻辑与的短路例题

1.题目&#xff1a;设inta1,b;&#xff0c;执行b0&&(a);后&#xff0c;变量a的值是&#xff1f; 2.代码解析&#xff1a; #include <stdio.h> int main() {//设inta1,b;执行b0&&(a);后&#xff0c;变量a的值是?int a 1, b;printf("表达式的值是…

【每日一题】根据规则将箱子分类

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;分类讨论 其他语言cpython3 写在最后 Tag 【分类讨论】【2023-10-20】 题目来源 2525. 根据规则将箱子分类 题目解读 题目意思明确&#xff0c;根据条件判断箱子的类别。 解题思路 方法一&#xff1a;分类讨论 根据…

Pyqt组合控件与QSpacerItem指南

Pyqt组合控件与QSpacerItem指南&#xff09; 组合控件效果如下所示&#xff1a; QSpacerItem详解 组合控件 创建一个组合的控件&#xff0c;比如 QCheckBox 和 QLabel&#xff0c;并为这个组合设置背景颜色&#xff0c;可以将它们放在一个容器小部件中&#xff0c;然后为容器小…

Leetcode——数组的旋转

189. 轮转数组 class Solution { public:void rotate(vector<int>& nums, int k) {int lennums.size();vector<int> num(len);for(int i0;i<len;i){num[(ik)%len]nums[i];}nums.assign(num.begin(),num.end());} };旋转数组 没看出数学公式gg 正确答案 cl…

经典文献阅读之--Calib Anything(使用SAM的无训练标定雷达相机外参)

0. 简介 Camera与LiDAR之间的外部标定研究正朝着更精确、更自动、更通用的方向发展&#xff0c;由于很多方法在标定中采用了深度学习&#xff0c;因此大大减少了对场景的限制。然而&#xff0c;数据驱动方法具有传输能力低的缺点。除非进行额外的训练&#xff0c;否则它无法适…

安卓Ampere Pro(充电评测)v4.09解锁专业版,供大家学习研究参考!

软件功能 支持查看充电的状态&#xff0c;充电速度是否正常&#xff0c;都可以轻松测试。 强大的测试功能&#xff0c;让你全面了解充电的状态。 温度过高提醒&#xff0c;保证手机的温度不过高&#xff0c;及时拔掉电源。 设置通知优先级&#xff0c;最高、较高、默认、较…

Zookeeper集群 + Kafka集群的详细介绍与部署

文章目录 1. Zookeeper 概述1.1 简介1.2 Zookeeper的工作机制1.3 Zookeeper 主要特点1.4 Zookeeper 数据结构1.5 Zookeeper的相关应用场景1.5.1 统一命名服务1.5.2 统一配置管理1.5.3 统一集群管理1.5.4 服务器动态上下线1.5.5 软负载均衡 1.6 Zookeeper 选举机制1.6.1 第一次启…

SI基础知识:说一说玻纤布规格(如1078)的具体含义,以及等效Dk计算

玻纤布的编织包含经向和纬向两个不同的方向&#xff0c;这些玻璃布并没有被紧密放置在一起&#xff0c;在玻纤布上会有开窗&#xff0c;而且经向开窗和纬向开窗大小不同。 IPC定义了每种玻纤布的编织密度以及所用玻璃丝的规格&#xff0c;如下图所示。 看上面的表格&#xff0c…

Fast DDS之Subscriber

目录 SubscriberSubscriberQosSubscriberListener创建Subscriber DataReaderSampleInfo读取数据 Subscriber扮演容器的角色&#xff0c;里面可以有很多DataReaders&#xff0c;它们使用Subscriber的同一份SubscriberQos配置。Subscriber可以承载不同Topic和数据类型的DataReade…

【算法学习】归并算法Merge Sort总结

归并排序思路简单&#xff0c;速度仅次于快速排序&#xff0c;为稳定排序算法&#xff0c;一般用于对总体无序&#xff0c;但是各子项相对有序的数列。 1. 基本思想 归并排序使用分治思想&#xff0c;分治模式下每一层递归有三个步骤&#xff1a; 分解&#xff08;divide)&a…

1813_ChibiOS的RT系统层

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 在ChibiOS中有一个RT系统层的部分&#xff0c;也就是内核的系统层。这个在其他的OS中是没有看到的&#xff0c;这里针对这一部分做一个简单的认识。…

送水订水商城小程序的作用是什么

无论瓶装水还是桶装水在市场中的需求度总是很高&#xff0c;相关送水公司或零售水企业也不少&#xff0c;消费者的购物方式一般是品牌直售或通过经销商&#xff0c;零售水则是超市/商场等场景。随着人们健康品质生活提升&#xff0c;家庭或办公等场所对桶装水或瓶装水的需求日益…

启山智软商城源码新官网震撼上线

欢迎来到我们全新升级的启山智软官网&#xff01; 启山智软一直致力于提供最优质的产品和服务&#xff0c;不断为客户创造更多价值。为了更好地展示我们的品牌形象和产品特色&#xff0c;我们进行了全新的网站升级。新官网拥有更加美观、简洁、直观的界面设计&#xff0c;更加智…

洗地机哪个品牌最好最实用?口碑最好的洗地机

当代人的家庭清洁方式&#xff0c;都悄摸摸的用上了智能扫地机或者洗地机&#xff0c;但是扫地机机器人对于一些顽固污渍的清洁能力略差&#xff0c;人不在家里的时候总担心会碰到啥东西卡机&#xff0c;所以&#xff0c;洗地机更适合对于清洁有高要求的人群&#xff0c;毕竟自…

开发过程中的八种确认方法

确认是确保做了正确的事情&#xff0c;方向不偏。确认可以在项目前期做&#xff0c;也可以在项目后期做&#xff0c;提倡持续确认、质量左移。在前期主要是检测需求的质量&#xff0c;在后期是检测完成的系统是否真的是客户所需。开发过程中常见的八种确认手段有&#xff1a; 1…

【APUE】进程

目录 一、进程标识符 pid 1.1 类型 pid_t 1.2 命令 ps 1.3 getpid && getppid 二、进程的产生 2.1 fork 简介 2.2 fork 实例 1 2.3 fork 实例 2 2.4 vfork 三、进程的消亡及释放资源 3.1 wait 3.2 waitpid 3.3 应用&#xff1a;进程分配初探 四、exec…