【Golang】??走進(jìn) Go 語(yǔ)言?? 第二十四課 TCP 高階操作

      網(wǎng)友投稿 882 2025-04-01

      golang】??走進(jìn) Go 語(yǔ)言?? 第二十四課 TCP 高階操作

      概述

      基礎(chǔ)知識(shí)

      Conn 接口

      net.Listen()

      listener.Accept()

      conn.Read()

      conn.Write()

      交互式通信

      服務(wù)器

      客戶端

      輸出結(jié)果:

      概述

      golang 是一個(gè)跨平臺(tái)的新生編程語(yǔ)言. 今天小白就帶大家一起攜手走進(jìn) Golang 的世界. (第 24 課)

      基礎(chǔ)知識(shí)

      Conn 接口

      Conn 是一種通用的面向流的網(wǎng)絡(luò)連接. 多個(gè) Goroutine 可以同時(shí)調(diào)用 Conn 上的方法.

      net.Listen()

      監(jiān)聽(tīng)本地網(wǎng)絡(luò)的廣播.

      格式:

      net.Listen(network, address string)

      1

      參數(shù):

      network: 網(wǎng)絡(luò)模式, “tcp”, “tcp4”, “tcp6”, “unix”, “unixpacket” 六選一

      address: 網(wǎng)絡(luò)地址

      例子:

      listen_socket, err := net.Listen("tcp", "127.0.0.1:8888")

      1

      返回值:

      listen_socket: 監(jiān)聽(tīng)接口

      err: 錯(cuò)誤

      listener.Accept()

      連接客戶端.

      格式:

      listener.Accept()

      1

      例子:

      conn, err := listen_socket.Accept()

      1

      返回值:

      conn: 網(wǎng)絡(luò)接口

      err: 錯(cuò)誤

      conn.Read()

      讀取信息.

      格式:

      conn.Read(b []byte)

      1

      例子:

      nums, err := conn.Read(buffer)

      1

      返回值:

      nums: 讀取的字節(jié)數(shù)

      err: 錯(cuò)誤

      conn.Write()

      傳輸信息.

      格式:

      conn.Write(b []byte)

      1

      例子:

      conn.Write([]byte("Hi, Server"))

      1

      交互式通信

      服務(wù)器

      package main import ( "fmt" "net" ) // 發(fā)送消息 func send_info(conn net.Conn) { // 發(fā)送消息 _, err := conn.Write([]byte("Message received")) error_check(err) fmt.Println("發(fā)送消息: Message received") } // 接收消息 func receive_info(conn net.Conn) { // 緩沖 buffer := make([]byte, 1024) // 循環(huán)讀取 for { // 讀取數(shù)據(jù) nums, err := conn.Read(buffer) if err != nil { break } if nums != 0 { // 獲取地址 address := conn.RemoteAddr() fmt.Println("收到消息:", string(buffer[:nums]), "來(lái)自:", address) } // 發(fā)送消息 send_info(conn) } } // 錯(cuò)誤處理 func error_check(err error) { if err != nil { fmt.Println("Error:", err) } } func main() { fmt.Println("服務(wù)端正在啟動(dòng)...") // 創(chuàng)建TCP服務(wù)端 listen_socket, err := net.Listen("tcp", "127.0.0.1:8888") error_check(err) // 關(guān)閉 defer listen_socket.Close() fmt.Println("服務(wù)端啟動(dòng)完畢, 等待連接...") // 啟動(dòng)連接 for { // 連接新客戶端 conn, err := listen_socket.Accept() error_check(err) // 接收每一個(gè)客戶端 go receive_info(conn) } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      【Golang】??走進(jìn) Go 語(yǔ)言?? 第二十四課 TCP 高階操作

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      70

      71

      72

      73

      74

      75

      客戶端

      package main import ( "bufio" "fmt" "net" "os" ) // 發(fā)送消息 func send_msg(conn net.Conn) { // 循環(huán)發(fā)送 for { // 讀取鍵盤輸入 reader := bufio.NewReader(os.Stdin) // 讀取一行 data, _, _ := reader.ReadLine() // 收到exit, 關(guān)閉客戶端 if string(data) == "exit" { fmt.Println("客戶端關(guān)閉") break } // 發(fā)送輸入的字符串 _, err := conn.Write(data) if err != nil { conn.Close() fmt.Println("Error:", err, "客戶端關(guān)閉") break } } } func main() { fmt.Println("客服端正在建立連接...") // 建立網(wǎng)絡(luò)連接 conn, err := net.Dial("tcp", "127.0.0.1:8888") if err != nil { fmt.Println("網(wǎng)絡(luò)連接錯(cuò)誤") os.Exit(1) } fmt.Println("客戶端成功連接到服務(wù)器, 服務(wù)器地址:", conn.RemoteAddr()) // 發(fā)送消息 go send_msg(conn) // 接收消息 buffer := make([]byte, 1024) // 循環(huán)接收 for { // 讀取消息 nums, err := conn.Read(buffer) if err != nil { fmt.Println("Error:", err) } fmt.Println("收到消息:", string(buffer[:nums])) } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      輸出結(jié)果:

      服務(wù)端:

      服務(wù)端正在啟動(dòng)... 服務(wù)端啟動(dòng)完畢, 等待連接... 收到消息: 洞1洞1, 我是洞2 來(lái)自: 127.0.0.1:62831 發(fā)送消息: Message received 收到消息: 洞1洞1, 我是洞3 來(lái)自: 127.0.0.1:55002 發(fā)送消息: Message received

      1

      2

      3

      4

      5

      6

      客戶端:

      客服端正在建立連接... 客戶端成功連接到服務(wù)器, 服務(wù)器地址: 127.0.0.1:8888 洞1洞1, 我是洞3 收到消息: Message received

      1

      2

      3

      4

      Go TCP/IP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:表格圖標(biāo)如何設(shè)置坐標(biāo)軸格式(怎么設(shè)置圖表坐標(biāo)軸)
      下一篇:excel表格如何設(shè)置0不顯示
      相關(guān)文章
      色播亚洲视频在线观看| 亚洲免费二区三区| 亚洲免费在线视频播放| 亚洲中文字幕成人在线| 亚洲av成人一区二区三区观看在线| 亚洲av永久无码精品天堂久久 | 亚洲成人一级电影| 亚洲AV成人片色在线观看高潮| 国产日韩亚洲大尺度高清| 中文字幕亚洲图片| 亚洲日韩精品A∨片无码| 亚洲日韩欧洲乱码AV夜夜摸| 亚洲精品线路一在线观看| 亚洲av无码乱码在线观看野外 | 亚洲人成影院在线| 久久久久亚洲AV无码麻豆| 91亚洲精品视频| 78成人精品电影在线播放日韩精品电影一区亚洲 | 国产大陆亚洲精品国产| 在线视频亚洲一区| 国产亚洲综合久久| 亚洲性日韩精品国产一区二区| 亚洲综合色视频在线观看| 亚洲人成精品久久久久| 亚洲处破女AV日韩精品| 亚洲成AV人在线播放无码| 国产成人精品日本亚洲网站 | 精品久久久久亚洲| 亚洲精品成人在线| 亚洲人成色7777在线观看| 亚洲AV无码久久精品蜜桃| 亚洲高清无在码在线无弹窗| 亚洲午夜电影在线观看| 亚洲AV无码国产精品色| 亚洲国产av玩弄放荡人妇| 亚洲国产精品人人做人人爱| 亚洲熟妇中文字幕五十中出| 亚洲第一福利网站| 亚洲中文字幕久在线| 亚洲av综合av一区二区三区| 亚洲国产成人久久综合野外|