Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk meminta soket untuk komunikasi rangkaian di Golang

Bagaimana untuk meminta soket untuk komunikasi rangkaian di Golang

PHPz
PHPzasal
2023-04-25 15:11:44847semak imbas

Golang amat diperlukan dengan soket dalam pengaturcaraan rangkaian Soket adalah asas komunikasi rangkaian dan membolehkan kami melaksanakan susunan protokol TCP/IP dengan mudah. Artikel ini akan memperkenalkan cara meminta soket untuk komunikasi rangkaian di Golang.

Pertama, kita perlu mengimport pakej bersih Pakej bersih di Golang menyediakan beberapa fungsi terkapsul untuk komunikasi rangkaian yang cekap. Apabila menggunakan soket, anda perlu memberi perhatian kepada keperluan untuk melaksanakan beberapa antara muka asas dalam protokol TCP/IP, seperti penubuhan sambungan, penghantaran data, pelepasan sambungan, dsb. Dengan bantuan fungsi yang disediakan oleh pakej bersih, kami boleh melaksanakan antara muka ini dengan mudah.

Sebelum melaksanakan permintaan soket, kami perlu menjelaskan beberapa konsep. Yang pertama ialah alamat IP dan nombor port Alamat IP ialah alamat yang diberikan oleh komputer pada rangkaian Nombor port ialah alamat logik yang digunakan untuk mengenal pasti perkhidmatan tertentu. Apabila berkomunikasi di rangkaian, kita perlu menentukan sasaran komunikasi melalui alamat IP dan nombor port. Kedua, terdapat jenis protokol, seperti TCP dan UDP Protokol yang berbeza mempunyai ciri komunikasi yang berbeza, kelebihan dan kekurangan Apabila memilih protokol, anda perlu membuat pertimbangan berdasarkan keperluan sebenar.

Di bawah, kami akan menunjukkan cara menggunakan Golang untuk meminta soket dalam kes mudah.

  1. Buat sambungan TCP

Di Golang, sangat mudah untuk menggunakan pakej bersih untuk mencipta sambungan TCP. Berikut ialah contoh kod:

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("连接失败")
        return
    }
    defer conn.Close()
    fmt.Println("连接成功")
}

Dalam kod di atas, kami menggunakan fungsi net.Dail untuk membuat sambungan TCP. Parameter pertama fungsi ini ialah jenis protokol, di sini kami memilih TCP. Parameter kedua ialah gabungan alamat IP sasaran dan nombor port Di sini kami menyambung ke perkhidmatan dengan alamat IP tempatan 127.0.0.1 dan nombor port 8080. Jika sambungan gagal, "Sambungan gagal" akan dikeluarkan, jika tidak, "Sambungan berjaya" akan dikeluarkan.

  1. Hantar data

Selepas mewujudkan sambungan TCP, kami boleh menghantar data ke sambungan. Gunakan fungsi conn.Write untuk menghantar data, seperti yang ditunjukkan di bawah:

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("连接失败")
        return
    }
    defer conn.Close()
    fmt.Println("连接成功")

    // 发送数据
    conn.Write([]byte("Hello World!"))
}

Dalam kod di atas, kami menggunakan fungsi conn.Write untuk menghantar sekeping data rentetan "Hello World!" . Proses ini sangat mudah, hanya gunakan fungsi conn.Write untuk menulis data ke sambungan.

  1. Terima data

Selepas menghantar data, kami perlu menerima data yang dikembalikan daripada sambungan. Gunakan fungsi conn.Read untuk menerima data, seperti yang ditunjukkan di bawah:

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("连接失败")
        return
    }
    defer conn.Close()
    fmt.Println("连接成功")

    // 发送数据
    conn.Write([]byte("Hello World!"))

    // 接收数据
    data := make([]byte, 1024)
    n, err := conn.Read(data)
    if err != nil {
        fmt.Println("接收数据失败")
        return
    }
    fmt.Println("接收到数据:", string(data[:n]))
}

Dalam kod di atas, kami menggunakan fungsi conn.Read untuk menerima data yang dikembalikan daripada sambungan, dan data yang dibaca disimpan dalam tatasusunan dalam bait. Hanya gunakan fungsi fmt.Println untuk mengeluarkan data yang diterima.

  1. Kod lengkap

Seterusnya, kami menyepadukan tiga langkah di atas untuk membentuk kes lengkap. Seperti yang ditunjukkan di bawah:

package main

import (
    "fmt"
    "net"
)

func main() {
    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    if err != nil {
        fmt.Println("连接失败")
        return
    }
    defer conn.Close()
    fmt.Println("连接成功")

    // 发送数据
    conn.Write([]byte("Hello World!"))

    // 接收数据
    data := make([]byte, 1024)
    n, err := conn.Read(data)
    if err != nil {
        fmt.Println("接收数据失败")
        return
    }
    fmt.Println("接收到数据:", string(data[:n]))
}

Dalam kod di atas, kami mula-mula menggunakan fungsi net.Dail untuk membuat sambungan TCP dan menghantar sekeping data rentetan "Hello World!", dan kemudian gunakan sambungan. Fungsi Baca untuk menerimanya Data yang dikembalikan daripada sambungan dan dipaparkan dalam terminal.

Ringkasan

Artikel ini memperkenalkan cara meminta soket untuk komunikasi rangkaian di Golang. Kami belajar cara membuat sambungan TCP, menghantar data dan menerima data. Dalam pengaturcaraan sebenar, kita perlu memilih protokol dan antara muka yang sepadan berdasarkan keperluan sebenar. Pengaturcaraan rangkaian ialah medan peringkat yang sangat rendah dan memerlukan pemahaman tertentu tentang prinsip dan protokol asas rangkaian komputer. Saya berharap melalui pengenalan artikel ini, pembaca dapat memahami dengan lebih mendalam ilmu berkaitan soket permintaan Golang.

Atas ialah kandungan terperinci Bagaimana untuk meminta soket untuk komunikasi rangkaian di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Penggunaan biasa fungsi GolangArtikel seterusnya:Penggunaan biasa fungsi Golang