亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

Golang網(wǎng)絡編程基礎是什么 使用net包建立TCP連接示例

P粉602998670
發(fā)布: 2025-08-16 18:53:01
原創(chuàng)
158人瀏覽過
Go語言通過net包實現(xiàn)TCP通信,服務端使用net.Listen監(jiān)聽端口,Accept接收連接并用goroutine處理;客戶端通過net.Dial發(fā)起連接,利用net.Conn進行讀寫。示例展示回聲服務:服務端接收消息后回顯,客戶端發(fā)送輸入并打印響應。關(guān)鍵點包括并發(fā)處理、連接管理和數(shù)據(jù)流控制,體現(xiàn)Go在網(wǎng)絡編程中的簡潔與高效。

golang網(wǎng)絡編程基礎是什么 使用net包建立tcp連接示例

Go語言的網(wǎng)絡編程基礎主要依賴于標準庫中的 net 包,它封裝了底層的網(wǎng)絡通信細節(jié),提供了簡單而強大的接口來處理TCP、UDP、HTTP等協(xié)議。其中,TCP作為面向連接、可靠的傳輸層協(xié)議,是構(gòu)建穩(wěn)定網(wǎng)絡服務的常用選擇。

使用 net 包建立TCP連接,核心涉及兩個角色:服務端監(jiān)聽連接請求,客戶端發(fā)起連接。下面通過一個簡單的回聲(echo)示例展示如何使用 net 包實現(xiàn)基本的TCP通信。

1. TCP服務端實現(xiàn)

服務端通過 net.Listen 監(jiān)聽指定地址和端口,等待客戶端連接。每當有新連接到來,使用 listener.Accept 接受連接并啟動一個 goroutine 處理數(shù)據(jù)讀寫,以實現(xiàn)并發(fā)處理多個客戶端。

示例代碼:

立即進入豆包AI人工智官網(wǎng)入口”;

立即學習豆包AI人工智能在線問答入口”;

豆包AI編程
豆包AI編程

豆包推出的AI編程助手

豆包AI編程483
查看詳情 豆包AI編程

package main

import (
    "bufio"
    "fmt"
    "net"
")

func main() {
    // 監(jiān)聽本地 8080 端口
    listener, err := net.Listen("tcp", "localhost:8080")
    if err != nil {
        fmt.Println("監(jiān)聽失敗:", err)
        return
    }
    defer listener.Close()
    fmt.Println("服務器啟動,監(jiān)聽端口 8080...")

    for {
        // 等待客戶端連接
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("接受連接失敗:", err)
            continue
        }

        // 啟動協(xié)程處理該連接
        go handleConnection(conn)
    }
}

// 處理客戶端連接
func handleConnection(conn net.Conn) {
    defer conn.Close()
    scanner := bufio.NewScanner(conn)
    for scanner.Scan() {
        msg := scanner.Text()
        fmt.Printf("收到消息: %s\n", msg)
        // 回顯給客戶端
        conn.Write([]byte("echo: " + msg + "\n"))
    }
}
登錄后復制

2. TCP客戶端實現(xiàn)

客戶端使用 net.Dial 連接到服務端,獲取連接對象后即可發(fā)送和接收數(shù)據(jù)。通過標準輸入讀取用戶輸入,并將內(nèi)容發(fā)送給服務端,同時讀取服務端返回的數(shù)據(jù)。

示例代碼:

立即進入豆包AI人工智官網(wǎng)入口”;

立即學習豆包AI人工智能在線問答入口”;

package main

import (
    "bufio"
    "fmt"
    "net"
    "os"
")

func main() {
    // 連接到服務端
    conn, err := net.Dial("tcp", "localhost:8080")
    if err != nil {
        fmt.Println("連接失敗:", err)
        return
    }
    defer conn.Close()
    fmt.Println("已連接到服務器")

    // 開啟一個協(xié)程接收服務端消息
    go func() {
        scanner := bufio.NewScanner(conn)
        for scanner.Scan() {
            fmt.Println("服務端:", scanner.Text())
        }
    }()

    // 從標準輸入讀取用戶輸入并發(fā)送
    input := bufio.NewScanner(os.Stdin)
    for input.Scan() {
        msg := input.Text()
        conn.Write([]byte(msg + "\n"))
    }
}
登錄后復制

3. 運行方式

先啟動服務端:

go run server.go

再打開另一個終端運行客戶端:

go run client.go

在客戶端輸入任意文本,服務端會打印并回顯,客戶端也會收到回顯內(nèi)容。

4. 關(guān)鍵點說明

  • net.Listen("tcp", addr):創(chuàng)建一個 TCP 監(jiān)聽器,綁定到指定地址。
  • listener.Accept():阻塞等待新連接,返回一個 net.Conn 接口。
  • net.Dial("tcp", addr):主動連接到指定服務端。
  • net.Conn:代表一個網(wǎng)絡連接,提供 Read 和 Write 方法進行數(shù)據(jù)傳輸。
  • 使用 goroutine 實現(xiàn)并發(fā)處理,避免阻塞主線程。

基本上就這些。Go 的 net 包設計簡潔,配合 goroutine 能輕松實現(xiàn)高性能網(wǎng)絡服務。理解 TCP 連接的建立與數(shù)據(jù)流處理是網(wǎng)絡編程的基礎。不復雜但容易忽略。

以上就是Golang網(wǎng)絡編程基礎是什么 使用net包建立TCP連接示例的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

編程速學教程(入門課程)
編程速學教程(入門課程)

編程怎么學習?編程怎么入門?編程在哪學?編程怎么學才快?不用擔心,這里為大家提供了編程速學教程(入門課程),有需要的小伙伴保存下載就能學習啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關(guān)注服務號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號