go語言網絡編程

在此之前,先了解一下defer

Go語言的defer,你真的懂了嗎?

這篇文章通過幾個生動的例子闡述了go語言當中return的執行順序和原理,也解答了爲什麼defer明明執行在return之前,但是看起來卻是在return之後進行的

然後,寫兩個簡單的服務端和客戶端的例子

package main
import (
    "net"
    "fmt"
)
func main() {
  var os int
  fmt.Println("請輸入服務端或客戶端編號")
  fmt.Scan(&os)

  if os == 1 {
         server, err := net.Listen("tcp", ":8888")
         if err == nil { //若果err爲nil,則成功創建
             for {
                 con, error_ := server.Accept()
                 fmt.Println("有一個客戶連接\n")
                 if error_ == nil {
                     con.Write([]byte("hello world!"))
                 }
             }
         } else {
             return
         }
     } else {
         conn, err := net.Dial("tcp", "127.0.0.1:8888")
         if err == nil {
             for {
                 buf := make([]byte, 1024)
                 if length, err := conn.Read(buf); err == nil {
                     if length > 0 {
                         buf[length] = 0
                         fmt.Printf("%s", string(buf[0:length]))
                     }
                 }
             }
         } else {
             return
         }
     }
 }

再打開服務端的情況下,我們打開一個客戶端就會如下顯示
這裏寫圖片描述

小測試之後,有一篇文章寫的很好
GO語言的進階之路-網絡編程之socket
膜拜大神,很詳細很清楚,還有完整的例子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章