Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk melaksanakan komunikasi rakan ke rakan menggunakan Golang

Bagaimana untuk melaksanakan komunikasi rakan ke rakan menggunakan Golang

PHPz
Lepaskan: 2023-04-18 09:16:44
asal
773 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang pantas dan cekap dengan ciri konkurensi yang boleh digunakan untuk pembangunan pelbagai aplikasi. Dari segi komunikasi rangkaian, Golang juga mempunyai fungsi yang berkuasa yang boleh mencapai komunikasi point-to-point. Artikel ini akan memperkenalkan cara menggunakan Golang untuk mencapai komunikasi titik ke titik.

1. Konsep komunikasi point-to-point

Komunikasi point-to-point merujuk kepada kaedah komunikasi yang bertukar secara langsung antara dua komputer dalam rangkaian tanpa melalui komputer lain. Dalam komunikasi point-to-point, data boleh dihantar dalam kedua-dua arah antara dua komputer, dan kelajuan penghantaran data adalah pantas, dan tidak perlu mempertimbangkan isu kebocoran maklumat.

2. Pelaksanaan komunikasi titik ke titik Golang

Golang, sebagai bahasa pengaturcaraan yang cekap, menyediakan fungsi API dan perpustakaan yang kaya, yang boleh merealisasikan komunikasi titik ke titik dengan mudah.

Pertama, kita perlu menggunakan rangkaian perpustakaan rangkaian yang disediakan di Golang untuk mewujudkan sambungan Soket. Berikut ialah kod contoh mudah:

package main

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

func main() {
    arguments := os.Args
    if len(arguments) == 1 {
        fmt.Println("Please provide a host:port string")
        return
    }

    CONNECT := arguments[1]
    c, err := net.Dial("tcp", CONNECT)
    if err != nil {
        fmt.Println(err)
        return
    }

    for {
        var msg string
        fmt.Scan(&msg)
        fmt.Fprintf(c, msg+"\n")

        buf := make([]byte, 1024)
        n, err := c.Read(buf)
        if err != nil {
            fmt.Println("Connection closed")
            return
        }

        receive := string(buf[:n])
        fmt.Print("received: ", receive)
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi net.Dail untuk mewujudkan sambungan. Antaranya, alamat sambungan disalurkan melalui parameter baris arahan. Selepas sambungan berjaya, kami boleh menghantar mesej kepada pelayan melalui input, dan pada masa yang sama, gunakan fungsi c.Read untuk membaca mesej yang dikembalikan oleh pelayan.

Seterusnya, mari kita lihat cara melaksanakan kod sebelah pelayan. Berikut ialah contoh mudah:

package main

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

func main() {
    arguments := os.Args
    if len(arguments) == 1 {
        fmt.Println("Please provide a port number")
        return
    }

    PORT := ":" + arguments[1]
    l, err := net.Listen("tcp", PORT)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer l.Close()

    for {
        c, err := l.Accept()
        if err != nil {
            fmt.Println(err)
            continue
        }

        fmt.Println("client connected")

        go handleConnection(c)
    }
}

func handleConnection(c net.Conn) {
    for {
        buf := make([]byte, 1024)
        n, err := c.Read(buf)
        if err != nil {
            c.Close()
            return
        }

        receive := string(buf[:n])
        fmt.Print("received: ", receive)

        msg := "Hello, client\n"
        c.Write([]byte(msg))
    }
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan fungsi net.Listen untuk memulakan pelayan pada port yang ditentukan. Seterusnya, kami menggunakan fungsi l.Accept untuk menerima permintaan sambungan pelanggan. Setelah sambungan diterima, kita boleh membaca mesej yang dihantar oleh pelanggan dan menghantar semula mesej itu kepada pelanggan.

3. Kelebihan dan kekurangan komunikasi point-to-point

Komunikasi peer-to-point mempunyai banyak kelebihan, termasuk:

  1. Kelajuan pantas: Sejak titik -Komunikasi ke titik adalah terus antara dua komputer Data dipindahkan supaya ia boleh dipindahkan lebih cepat daripada melalui komputer pencelah.
  2. Keselamatan tinggi: Komunikasi point-to-point boleh bertukar-tukar data secara langsung antara dua komputer, mengelakkan risiko data diganggu apabila melalui komputer perantaraan.
  3. Dwiarah yang baik: Komunikasi titik ke titik boleh menghantar data dalam kedua-dua arah antara dua komputer Penghantaran data masa nyata boleh dicapai mengikut senario aplikasi yang berbeza.

Walaupun komunikasi point-to-point popular, ia juga mempunyai beberapa kelemahan:

  1. Kurang fleksibiliti: Komunikasi point-to-point hanya boleh bertukar-tukar data antara dua komputer, Jika data perlu ditukar antara berbilang komputer, sambungan berbilang titik ke titik perlu diwujudkan.
  2. Perlu menentukan kaedah sambungan: Komunikasi titik ke titik perlu menentukan kaedah sambungan, termasuk alamat sambungan, protokol, dsb. Ini mengehadkan penggunaan komunikasi titik ke titik dalam senario tertentu.
  3. Mengesahkan sambungan bukanlah mudah: Komunikasi titik ke titik memerlukan status sambungan yang jelas bagi kedua-dua pihak, yang memerlukan jumlah masa dan sumber tertentu.

4. Ringkasan

Artikel ini memperkenalkan cara menggunakan Golang untuk mencapai komunikasi titik ke titik. Dengan mewujudkan sambungan Soket, kami boleh memindahkan data secara langsung antara dua komputer. Walaupun komunikasi titik ke titik mempunyai beberapa kelemahan, dalam beberapa senario aplikasi tertentu, ia boleh memberikan penghantaran data yang cepat, cekap dan selamat.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan komunikasi rakan ke rakan menggunakan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan