首先复习一下go的基本语法
1:变量定义
val 变量 变量类型
val v1 int val v2 string val v3 [10]int //定义一个int10的数组 val v4 map[string] string //定义一个字典 key为string value也为string val v5 func(a int) int //v5指向一个函数
可以更简单一些,根据数据推断类型,如下:
v6 := 90 v7 := "hello china"
匿名变量 _,_,name := GetName()
如果调用一个方法返回多个变量,有些变量不使用,可以用——代替
常量 const mark = 1<<3
go server
package main /* *go server *can be serve as chat,game,file trans server *also can be serve as proxy server *surpport protocal :http tcp udp ftp https sock5 and so on * *************************************************************************/ import ( "fmt" "io" "log" ) import "net" const addr = "127.0.0.1:1080" const bufferSize = 4096 const maxConn = 1000 type bundle struct { clientNO int64 //current client num clients map[string]serverClient //store client in the map,key:client name,value: serverClient } func (s bundle) init() { } func (s bundle) startNewClient(clientName string, client serverClient) { s.clients[clientName] = client s.clientNO++ client.startProcess() } type serverClient struct { clientName string //client username Conn net.Conn //send chan []byte //reply io.Writer } //process client data func (client serverClient) startProcess() { data := make([]byte, bufferSize) n, _ := io.ReadFull(client.Conn, data) if n > 0 { fmt.Println(string(data[0:n])) } client.Conn.Write([]byte("hello ")) } //start server,when accept ,let gorountine to process func startServer() { b := new(bundle) b.clients = make(map[string]serverClient) a, err := net.ResolveTCPAddr("tcp", addr) if err != nil { log.Fatal(err) } l, err2 := net.ListenTCP("tcp", a) if err2 != nil { log.Fatal(err2) } for { c, err3 := l.Accept() if err3 != nil { log.Fatal(err3) } fmt.Print("new client from :") fmt.Println(c.RemoteAddr()) ch := serverClient{"1", c} go b.startNewClient(c.RemoteAddr().String(), ch) } } func main() { fmt.Println("start server") startServer() }
go client
package main import ( "fmt" "io" "log" ) import "net" const svrAddr = "127.0.0.1:1080" const clientAddr = "127.0.0.1:2090" const bufferSize = 4096 type clientBundle struct { conn net.Conn } func startClient(ch chan int) { conn, err := net.Dial("tcp", svrAddr) if err != nil { log.Fatal(err) } defer conn.Close() b := clientBundle{conn} //conn.Write([]byte("hello server")) io.WriteString(conn, "sfsf") //io.Writer. b.processRead() } func (b clientBundle) processRead() { //data := make([]byte, bufferSize) //n, _ := io.ReadFull(b.conn, data) //if n > 0 { // fmt.Println(data[:n]) //} } func main() { fmt.Println("start client") for { conns := make(chan int) startClient(conns) } //<-conns fmt.Println("finish send") }
相关推荐
Golang(Go语言)作为一门现代编程语言,因其简洁高效的特点,在网络编程领域表现尤为突出。本文将详细介绍Golang网络编程的基础知识与核心概念。 #### 二、网络编程基础 ##### 1. 协议层 网络通信是通过多层协议...
### Go语言网络编程知识点概述 本文档主要介绍了Go语言中的网络编程基础知识,涵盖了Socket编程、HTTP客户端与服务器的实现方式,以及如何通过Go语言进行RPC(远程过程调用)和JSON数据交换等实用技巧。此外,还...
Go语言提供了一种简洁、高效的网络编程方式,使得开发者可以快速地构建网络应用。 Go语言的网络编程模型基于TCP/IP协议和UNIX套接字。Go语言标准库中的net包提供了对TCP、UDP、IP以及UNIX套接字的抽象,使得开发者...
在本文中,我们将深入探讨Go语言在网络编程中的应用,基于提供的`go网络测试代码.go`...具体的`go网络测试代码.go`中的实现细节,需要查看源代码才能深入了解,但以上内容已经涵盖了Go语言网络编程的基础知识和关键点。
##### 1.2 Go语言网络编程概述 Go语言,又称为Golang,是一种由Google设计和开发的静态类型、编译型的语言。Go语言的一大特点是内置了强大的网络编程支持,这使得开发者可以轻松构建高性能的网络应用。 Go语言的...
本教程“Go语言网络编程-v0.0.2”将深入探讨Go语言在网络编程领域的应用。 一、Go语言基础 Go语言的核心特性包括简洁的语法、内置并发机制、类型系统和垃圾回收。它的语法接近C语言,但增加了许多现代编程语言的...
Go语言网络编程 Go语言Web开发基础 Go语言Web框架实战 Go语言数据库交互 Go语言性能优化 Go语言错误处理与测试 Go语言构建工具与包管理 Go语言反射与接口 Go语言与微服务架构 Go语言在云原生环境的应用 Go语言安全...
《Go网络编程》是一本专注于使用Go语言进行网络编程的专著,主要涵盖了Go语言在网络编程领域的核心概念、工具和实践技巧。...无论是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的Go语言网络编程技能。
### Go语言网络编程:net包的深度探索与实践 #### Go语言概述 Go语言,也称为Golang,是由Google开发并开源的一种编程语言。它具备静态类型和编译型的特点,设计之初的目标是为了提高编程效率并解决现代多核处理器...
Go网络编程实践 Go数据库交互技术 Go语言构建Web应用 Go语言与微服务架构 Go语言性能优化 Go语言错误处理与测试 Go语言反射与接口 Go语言标准库深度解析 Go语言工具链使用 Go语言项目实战 Go语言社区与生态 Go语言...
Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它在设计时兼顾了开发效率和系统性能,因此在云计算、微服务和网络编程等领域得到广泛应用。 书中的内容...
除此之外,书中还涵盖了网络编程、错误处理、内存管理、垃圾回收等重要主题,这些都是Go语言在实际开发中不可或缺的部分。此外,书中还讨论了如何进行安全编程,帮助开发者避免常见的安全漏洞。 总的来说,《Go语言...
Go语言之所以被称为网络和多核时代的C语言,是因为它从C语言继承并发扬了多种编程思想,包括表达式语法、控制流结构、基础数据类型、调用参数传值、指针等,并在并发编程上进行了革命性的创新。 Go语言的发展历史...
Go语言,以其在并发处理和简洁语法方面的优势,成为了网络编程领域的热门选择。本文将深入探讨Go语言在网络编程中的应用,包括TCP/IP套接字编程、HTTP服务器和客户端的实现,以及使用现代网络框架如Gin和gRPC进行...
Go语言的设计灵感来源于C语言,但同时引入了垃圾回收、并发编程和类型安全性等现代特性,使得它在系统编程、网络编程以及云计算等领域得到了广泛应用。 Go语言的主要特点包括: 1. **简洁性**:Go语言语法简洁明了...