广东网页制作与网站建设,广州域名注册,h5如何制作,公司想做网站费用要多少钱Go语言网络编程 Go语言程序服务端客户端 Http程序 有关网络的基本知识我之前的博客介绍的很详细 这里就不再赘述了 这里主要讲解下Go语言网络编程的语法
网络基础
协议
Go语言程序
我们建立一个tcp链接的步骤为 socket bind listen accept 但是在Go语言中 我们并不需要前两… Go语言网络编程 Go语言程序服务端客户端 Http程序 有关网络的基本知识我之前的博客介绍的很详细 这里就不再赘述了 这里主要讲解下Go语言网络编程的语法
网络基础
协议
Go语言程序
我们建立一个tcp链接的步骤为 socket bind listen accept 但是在Go语言中 我们并不需要前两步 并且listen 和 accept的结构都嵌入到了 net 网络包当中 所以说我们只需要调用net包即可
服务端
package mainimport (fmtnetstrings
)func dealcoon(coon net.Conn) {// 接收到链接之后我们开始接受数据defer coon.Close() // 在这个函数结束的时候 我们关闭链接套接字ipaddress : coon.RemoteAddr().String()fmt.Println(新的链接已获得 ip地址为, ipaddress)buf : make([]byte, 1024) // 开辟一个新的缓冲区来接受用户的数据for { // 阻塞等待用户发送的数据n, err : coon.Read(buf) // 从链接中读取数据 相当于像buf中写入数据 n为读取的长度if err ! nil {fmt.Println(conn read error)break} // 读取失败 出现了某些问题// 走到这里表示读取成功 读取了n个字节的数据 我们进行切片截取 只截取有效数据result : buf[:n]// 如果对方发送了exit 直接退出if exit string(result) {println(收到退出信号 直接退出)return}// 如果是其他的数据 我们将数据大写之后返回给客户端coon.Write([]byte(strings.ToUpper(string(result))))}}func main() {// 首先创建一个监听套接字listener, err : net.Listen(tcp, 127.0.0.1)if err ! nil {println(listen error )return}defer listener.Close()// 因为我们的tcp程序需要不断的accept新数据 所以说这里要使用一个for循环for {//conn, err : listener.Accept()if err ! nil {fmt.Println(accept error)break} // 跑到这里说明我们套接字的listen出现了错误// 这里直接分出一个协程去处理其他问题}
}客户端
package mainimport (fmtlognet
)func main() {conn, err : net.Dial(tcp, 127.0.0.1)if err ! nil {log.Fatal(conn error)} // 链接失败// 到这里就是链接成功了for {fmt.Println(请输入你要发送的数据)buf : make([]byte, 1024)fmt.Scan(buf)// 向服务器发送数据conn.Write(buf)// 接受服务器的数据并打印出来n, err2 : conn.Read(buf) if err2! nil {fmt.Println(出现读取错误了) break}// 截取有效长度的字节result : buf[:n] fmt.Println(string(result))}
}
Http程序
有关http协议我之前的博客介绍的很详细 大家如果想了解可以参考我的这几篇博客 Http协议详解
我们写Http服务端程序时 需要包含 net/http 包
之后的使用方法如下
首先我们需要注册带有 func(w http.ResponseWriter, r *http.Requests)签名的函数其中 w 用来给客户端发送各种数据 r用来获取各个参数之后我们选择使用 http.HandleFunc(/go, myHandler) 函数来注册各个url对应的处理函数最后我们指定ip和端口进行监听即可 代码如下 http.ListenAndServe(127.0.0.1:8000, nil)
我们写Http客户端程序时 需要包含 net/http 包
这里的步骤就更简单了
直接使用 http.Get(http://127.0.0.1:8000/go) 函数 指定我们需要的url即可
之后就是对于数据业务的处理了 此处省略