当前位置: 首页 > news >正文

昆明网站建设推广优化西安百度推广开户

昆明网站建设推广优化,西安百度推广开户,河南省建设厅网站公示公告,wordpress 文章访问次数目录标题 一、Json序列化与反序列化1. 序列化2. 反序列化 二、Goto语法三、Tcp Socket1. 单客户端发送信息到服务端2. 服务端客户端通信 一、Json序列化与反序列化 1. 序列化 package mainimport ("encoding/json""fmt")type Person struct {Name string…

目录标题

  • 一、Json序列化与反序列化
    • 1. 序列化
    • 2. 反序列化
  • 二、Goto语法
  • 三、Tcp Socket
    • 1. 单客户端发送信息到服务端
    • 2. 服务端客户端通信

一、Json序列化与反序列化

1. 序列化

		package mainimport ("encoding/json""fmt")type Person struct {Name  string `json:"name"`Age   int    `json:"age"`Email string `json:"email"`}func main() {person := Person{Name:  "LoisMay",Age:   21,Email: "1711031006@qq.com",}// 序列化为 JSON 字节数组jsonData, err := json.Marshal(person)if err != nil {fmt.Println("JSON 序列化错误:", err)return}// 打印 JSON 字符串fmt.Println(string(jsonData))// {"name":"LoisMay","age":21,"email":"1711031006@qq.com"}}

2. 反序列化

		func main() {Data := []byte(`{"name":"LoisMay","age":21,"email":"1711031006@qq.com"}`)// 反序列化为 Person 结构体var person Personerr := json.Unmarshal(Data, &person)if err != nil {fmt.Println("JSON 反序列化错误:", err)return}// 打印反序列化后的对象fmt.Println(person.Name)fmt.Println(person.Age)fmt.Println(person.Email)}

二、Goto语法

        goto 语句可以用来实现程序的无条件跳转但在实际开发中,应该谨慎使用它,因为滥用 goto 可能会导致代码结构混乱和可读性降低。package mainimport "fmt"func main() {var n = 30fmt.Println("LoisMay")if n > 20 {goto func1}fmt.Println("LoisMays")fmt.Println("LoisMayss")fmt.Println("LoisMaysss")func1:fmt.Println("666")fmt.Println("777")fmt.Println("888")}//	LoisMay//	666//	777//	888

三、Tcp Socket

1. 单客户端发送信息到服务端

Server.go

		package mainimport ("bufio""fmt""net""strings")func process(conn net.Conn) {defer conn.Close()reader := bufio.NewReader(conn)for {fmt.Printf("Server is waiting for client message from %s:\n", conn.RemoteAddr().String())massage, err := reader.ReadString('\n')if err != nil {fmt.Printf("Client exited with error: %v\n", err)return}massage = strings.Trim(massage, "\r\n")fmt.Printf("Received message from client: %s\n", massage)// 服务端回复消息response := "Server received: " + massage + "\n"_, err = conn.Write([]byte(response))if err != nil {fmt.Printf("Error sending response to client: %v\n", err)return}}}func main() {fmt.Println("Server is Listen")listen, err := net.Listen("tcp", "0.0.0.0:8888")if err != nil {fmt.Println("Listen err=", err)return}defer listen.Close()for {fmt.Println("Waiting for client connection")conn, err := listen.Accept()if err != nil {fmt.Println("Accept err=", err)} else {fmt.Printf("Accepted connection from client: %v\n", conn.RemoteAddr().String())}go process(conn)}}

Client.go

		package mainimport ("bufio""fmt""net""os""strings")func main() {conn, err := net.Dial("tcp", "0.0.0.0:8888")if err != nil {fmt.Println("Client dial error:", err)return}defer conn.Close()reader := bufio.NewReader(os.Stdin)for {fmt.Print("Enter message: ")message, err := reader.ReadString('\n')if err != nil {fmt.Println("ReadString error:", err)break}message = strings.Trim(message, "\r\n")if message == "exit" {fmt.Println("Client is exiting")break}_, err = conn.Write([]byte(message + "\n"))if err != nil {fmt.Println("Connection write error:", err)break}response, err := bufio.NewReader(conn).ReadString('\n')if err != nil {fmt.Println("Read response error:", err)break}fmt.Println("Server response:", response)}}

2. 服务端客户端通信

server.go

		package mainimport ("bufio""fmt""net""os""strings")func handleClient(conn net.Conn) {defer conn.Close()reader := bufio.NewReader(conn)writer := bufio.NewWriter(conn)for {// 读取客户端消息message, err := reader.ReadString('\n')if err != nil {fmt.Printf("Error reading client message: %v\n", err)return}message = strings.Trim(message, "\r\n")fmt.Printf("Received message from client: %s\n", message)// 回复客户端消息response := "Server received: " + message + "\n"_, err = writer.WriteString(response)if err != nil {fmt.Printf("Error sending response to client: %v\n", err)return}writer.Flush()// 检查客户端是否要退出if message == "exit" {fmt.Println("Client is exiting")return}}}func main() {fmt.Println("Server is listening")listener, err := net.Listen("tcp", "0.0.0.0:8888")if err != nil {fmt.Println("Listen error:", err)return}defer listener.Close()for {fmt.Println("Waiting for client connection")conn, err := listener.Accept()if err != nil {fmt.Println("Accept error:", err)break}fmt.Println("Client connected:", conn.RemoteAddr().String())go handleClient(conn)// 启动一个 goroutine 处理服务端发送消息go func(c net.Conn) {reader := bufio.NewReader(os.Stdin)writer := bufio.NewWriter(c)for {// 从控制台读取输入fmt.Print("Enter message: ")input, _ := reader.ReadString('\n')input = strings.Trim(input, "\r\n")// 发送消息给客户端_, err := writer.WriteString(input + "\n")if err != nil {fmt.Printf("Error sending message to client: %v\n", err)return}writer.Flush()// 检查服务端是否要退出if input == "exit" {fmt.Println("Server is exiting")return}}}(conn)}// 阻塞主线程,使服务端持续运行<-make(chan struct{})}

Client.go

		package mainimport ("bufio""fmt""net""os""strings")func handleServer(conn net.Conn) {defer conn.Close()reader := bufio.NewReader(conn)writer := bufio.NewWriter(conn)for {// 读取服务端消息message, err := reader.ReadString('\n')if err != nil {fmt.Printf("Error reading server message: %v\n", err)return}message = strings.Trim(message, "\r\n")fmt.Printf("Received message from server: %s\n", message)// 检查服务端是否要退出if message == "exit" {fmt.Println("Server is exiting")return}// 从控制台读取输入fmt.Print("Enter message: ")input, _ := reader.ReadString('\n')input = strings.Trim(input, "\r\n")// 发送消息给服务端_, err = writer.WriteString(input + "\n")if err != nil {fmt.Printf("Error sending message to server: %v\n", err)return}writer.Flush()// 检查客户端是否要退出if input == "exit" {fmt.Println("Client is exiting")return}}}func main() {conn, err := net.Dial("tcp", "127.0.0.1:8888")if err != nil {fmt.Println("Client dial error:", err)return}fmt.Println("Connected to server")go handleServer(conn)// 从控制台读取输入reader := bufio.NewReader(os.Stdin)for {fmt.Print("Enter message: ")input, _ := reader.ReadString('\n')input = strings.Trim(input, "\r\n")// 发送消息给服务端_, err = conn.Write([]byte(input + "\n"))if err != nil {fmt.Printf("Error sending message to server: %v\n", err)return}// 检查客户端是否要退出if input == "exit" {fmt.Println("Client is exiting")break}}conn.Close()}

在这里插入图片描述

http://www.hkea.cn/news/96178/

相关文章:

  • 贵阳疫情最新消息站内seo优化
  • wordpress相关问题深圳百度关键字优化
  • 做国珍新时代 网站陕西seo顾问服务
  • 建立网站怎么做关键字搜索引擎营销的作用
  • 广州手机网站建设宁波seo优化费用
  • 怎么设置网站服务器宁德市教育局官网
  • 查看网站源代码建站可以牛排seo系统
  • 政府网站建设的基本原则百度网盘电脑版
  • 张家港网站建设福州百度快速优化
  • 兼职做网站编辑百度搜索推广开户
  • 谁告诉你j2ee是做网站的宁波网站推广找哪家公司
  • 谷歌外贸建站多少钱搭建网站教程
  • 赚钱靠普的网站关键字搜索软件
  • 建设银行深分行圳招聘网站做游戏推广一个月能拿多少钱
  • 北京网站建设及推广招聘关键词排名代做
  • 对网站建设的意见建议网络营销推广的方法有哪些
  • 爬虫网站怎么做怎样才能在百度上面做广告宣传
  • 网站页码南昌做seo的公司有哪些
  • 网络设计方案包括哪些深圳百度推广seo公司
  • 亚马逊跨境电商开店站长工具seo综合查询5g
  • 网站怎么做百度快照logo百度快照优化推广
  • 山西网站建设排名seo技术培训山东
  • 日韩系成人影片成首选网站如何优化推广
  • 网站到期续费通知搜索风云排行榜
  • 网站公司说我们做的网站服务器不够用哪个杭州seo好
  • 类似淘宝网站建设费用杭州哪家seo公司好
  • 装修网站怎样做seo专员很难吗
  • 无锡网站外包如何接广告赚钱
  • 英文网站制作 官网淘宝标题优化网站
  • 电力建设网站网络推广网站的方法