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

柘城县网站建设青岛集团网站建设

柘城县网站建设,青岛集团网站建设,网站接口怎么做,中国十佳企业网站设计公司文章目录 前言:网络编程一、TCP/UDP 编程:net 包的使用1. TCP 编程1.1 TCP 服务器1.2 TCP 客户端 2. UDP 编程2.1 UDP 服务器2.2 UDP 客户端 二、HTTP 编程:net/http 包的使用,编写 HTTP 服务器和客户端2.1 HTTP 服务器2.2 HTTP 客…

文章目录

  • 前言:网络编程
  • 一、TCP/UDP 编程:`net` 包的使用
    • 1. TCP 编程
      • 1.1 TCP 服务器
      • 1.2 TCP 客户端
    • 2. UDP 编程
      • 2.1 UDP 服务器
      • 2.2 UDP 客户端
  • 二、HTTP 编程:`net/http` 包的使用,编写 HTTP 服务器和客户端
    • 2.1 HTTP 服务器
    • 2.2 HTTP 客户端
  • 三、WebSocket 编程:`gorilla/websocket` 包的使用
    • 3.1 WebSocket 服务器
    • 3.2 WebSocket 客户端

前言:网络编程

Go 语言提供了强大的网络编程能力,支持 TCP/UDP 协议的开发、HTTP 服务的构建,以及 WebSocket 协议的支持。通过内置的 netnet/http 包,Go 使得网络编程变得简洁高效。我们也可以使用第三方库,如 gorilla/websocket 来简化 WebSocket 的使用。

一、TCP/UDP 编程:net 包的使用

Go 的 net 包提供了多种方法来处理 TCP 和 UDP 网络编程。你可以通过它创建网络连接、发送和接收数据。

1. TCP 编程

TCP 是面向连接的协议,它保证数据的可靠传输。在 Go 中,可以使用 net 包提供的 DialListen 方法来建立 TCP 客户端和服务器。

1.1 TCP 服务器

package mainimport ("fmt""net""log"
)func handleConnection(conn net.Conn) {fmt.Println("Client connected:", conn.RemoteAddr())defer conn.Close()conn.Write([]byte("Hello, client!"))
}func main() {// 创建 TCP 监听listener, err := net.Listen("tcp", ":8080")if err != nil {log.Fatal(err)}defer listener.Close()fmt.Println("Server is listening on port 8080...")for {conn, err := listener.Accept() // 接受客户端连接if err != nil {log.Fatal(err)}go handleConnection(conn) // 为每个连接启动一个 goroutine 处理}
}

1.2 TCP 客户端

package mainimport ("fmt""net""log"
)func main() {// 创建 TCP 客户端连接conn, err := net.Dial("tcp", "localhost:8080")if err != nil {log.Fatal(err)}defer conn.Close()// 接收并打印服务器返回的消息buffer := make([]byte, 1024)n, err := conn.Read(buffer)if err != nil {log.Fatal(err)}fmt.Println("Server says:", string(buffer[:n]))
}

2. UDP 编程

UDP 是无连接的协议,传输速度较快,但不保证数据的可靠性。在 Go 中,使用 net 包提供的 ListenUDPDialUDP 方法来处理 UDP 通信。

2.1 UDP 服务器

package mainimport ("fmt""net""log"
)func main() {// 创建 UDP 监听地址addr, err := net.ResolveUDPAddr("udp", ":8080")if err != nil {log.Fatal(err)}conn, err := net.ListenUDP("udp", addr)if err != nil {log.Fatal(err)}defer conn.Close()buffer := make([]byte, 1024)for {n, clientAddr, err := conn.ReadFromUDP(buffer)if err != nil {log.Fatal(err)}fmt.Println("Received:", string(buffer[:n]), "from", clientAddr)}
}

2.2 UDP 客户端

package mainimport ("fmt""net""log"
)func main() {// 创建 UDP 目标地址serverAddr, err := net.ResolveUDPAddr("udp", "localhost:8080")if err != nil {log.Fatal(err)}// 创建 UDP 连接conn, err := net.DialUDP("udp", nil, serverAddr)if err != nil {log.Fatal(err)}defer conn.Close()// 发送数据message := []byte("Hello, UDP server!")_, err = conn.Write(message)if err != nil {log.Fatal(err)}fmt.Println("Message sent to server")
}

二、HTTP 编程:net/http 包的使用,编写 HTTP 服务器和客户端

Go 语言的 net/http 包提供了简单而强大的 HTTP 服务器和客户端功能。通过该包,你可以很容易地编写 HTTP 服务器,并与 HTTP 客户端进行通信。

2.1 HTTP 服务器

Go 提供了非常简洁的方式来构建 HTTP 服务器。你只需要实现处理请求的函数,并通过 http.HandleFunc 注册路由,然后调用 http.ListenAndServe 启动服务器。

package mainimport ("fmt""net/http"
)func helloHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "Hello, World!")
}func main() {http.HandleFunc("/hello", helloHandler) // 注册路由fmt.Println("Starting server on :8080...")http.ListenAndServe(":8080", nil) // 启动 HTTP 服务器
}

在这个示例中,HTTP 服务器会监听 8080 端口,并且在请求 /hello 路径时返回 Hello, World!

2.2 HTTP 客户端

Go 语言的 http 包也提供了简单的方式来发起 HTTP 请求。你可以使用 http.Gethttp.Post 等方法发起请求,并接收返回的响应。

package mainimport ("fmt""net/http""log"
)func main() {// 发起 GET 请求resp, err := http.Get("http://localhost:8080/hello")if err != nil {log.Fatal(err)}defer resp.Body.Close()// 打印响应状态和内容fmt.Println("Response Status:", resp.Status)
}

在这个示例中,客户端发起一个 GET 请求,访问服务器的 /hello 路径,获取服务器的响应。


三、WebSocket 编程:gorilla/websocket 包的使用

WebSocket 是一种在单个连接上进行全双工通信的协议。Go 中可以使用第三方库 gorilla/websocket 来实现 WebSocket 服务端和客户端。

3.1 WebSocket 服务器

首先,你需要安装 gorilla/websocket 包:

go get github.com/gorilla/websocket

然后,编写 WebSocket 服务器:

package mainimport ("fmt""log""net/http""github.com/gorilla/websocket"
)var upgrader = websocket.Upgrader{CheckOrigin: func(r *http.Request) bool { return true },
}func handleConnection(w http.ResponseWriter, r *http.Request) {conn, err := upgrader.Upgrade(w, r, nil)if err != nil {log.Println(err)return}defer conn.Close()for {messageType, p, err := conn.ReadMessage()if err != nil {log.Println(err)return}if err := conn.WriteMessage(messageType, p); err != nil {log.Println(err)return}}
}func main() {http.HandleFunc("/ws", handleConnection)fmt.Println("WebSocket server is running on :8080...")log.Fatal(http.ListenAndServe(":8080", nil))
}

3.2 WebSocket 客户端

WebSocket 客户端同样也可以使用 gorilla/websocket 包来连接到 WebSocket 服务器。

package mainimport ("fmt""log""github.com/gorilla/websocket"
)func main() {// 连接到 WebSocket 服务器conn, _, err := websocket.DefaultDialer.Dial("ws://localhost:8080/ws", nil)if err != nil {log.Fatal(err)}defer conn.Close()message := []byte("Hello, WebSocket server!")err = conn.WriteMessage(websocket.TextMessage, message)if err != nil {log.Fatal(err)}_, response, err := conn.ReadMessage()if err != nil {log.Fatal(err)}fmt.Println("Received from server:", string(response))
}

在这个示例中,WebSocket 客户端连接到 WebSocket 服务器并发送消息,然后等待服务器的响应。


文章转载自:

http://YMbtL4sE.drfrm.cn
http://DJmbm7Hp.drfrm.cn
http://eTZAe5MU.drfrm.cn
http://fU3ikH2b.drfrm.cn
http://0vDghgGI.drfrm.cn
http://fA8tqbrX.drfrm.cn
http://iQ6wPD89.drfrm.cn
http://n2lWPPIZ.drfrm.cn
http://UCgmXVBb.drfrm.cn
http://aKF4el0S.drfrm.cn
http://Yv76S5XS.drfrm.cn
http://RdJaScVt.drfrm.cn
http://kqgDbbUe.drfrm.cn
http://6ETeQ7h5.drfrm.cn
http://ospDqgNz.drfrm.cn
http://ol4iH9Vm.drfrm.cn
http://Gmqi5fNZ.drfrm.cn
http://vJZzlHSp.drfrm.cn
http://kWYwT4pJ.drfrm.cn
http://EOah0Oo8.drfrm.cn
http://WdB7ntG1.drfrm.cn
http://tzBnjkCV.drfrm.cn
http://71RKsVbV.drfrm.cn
http://9jJuG3Qw.drfrm.cn
http://rJJiY14Y.drfrm.cn
http://1ySInxKE.drfrm.cn
http://ZW1oY9PI.drfrm.cn
http://IFWbgAD3.drfrm.cn
http://kLkKk3v1.drfrm.cn
http://Pv4A2oxY.drfrm.cn
http://www.dtcms.com/wzjs/734112.html

相关文章:

  • 建设小型网站wordpress模板优化
  • 网站里的团队建设范本太原今天最新通知
  • 凡科网站自己如何做用html5做手机网站
  • 河西苏州网站建设沈阳男科医院哪家好点
  • 橱柜手机网站模板手机如何做网页
  • 做设计在哪个网站找图片做公司产品展示网站
  • 淘宝的电子商务网站的建设潍坊个人网站制作
  • 网站哪家做得好撸撸撸做最好的导航网站
  • 网站编辑心得体会萧山做网站公司
  • 深圳做网站推广优化保定网站建设保定
  • 网站的程序有哪些内容校园推广的方式有哪些
  • 简单的网站开发流程wordpress 找不到安装主题
  • 帝国网站后台编辑器没有了专业网站建设网站推广
  • 网站后台怎么做alt标签做网站的基础
  • 企业专业网站建设的必要性建立良好的公共秩序教学设计
  • 网站 aspx 模板网站静态化的好处
  • 怎么能创建自己的网站个人对网络营销的看法
  • 珠海一元夺宝网站建设做网站的类型
  • 怎么做这个购物网站wordpress建站好不好
  • 上传文件到网站根目录个人作品主页wordpress
  • 免费域名网站推荐新闻头条新闻
  • 做网站界面一般用什么来做制作小程序教程
  • 展示型手机网站ae免费模板下载网站
  • 承德住房和城乡建设局网站关闭了网站设计师认证培训
  • 公司网站公司新闻wordpress只能显示字
  • 大网站服务器维护费用江门百度seo
  • 昆明企业为什么要做网站学院网站建设管理办法
  • 制作网站源码软件学校介绍网站模板
  • 大气红色网站会qt怎么做网站
  • 南山网站建设公司校园网设计方案