Bolehkah saya Tentukan Antara Muka dan Alamat Rangkaian Apabila Mendail dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-25 14:01:14
asal
116 orang telah melayarinya

Can I Specify a Network Interface and Address When Dialing in Go?

Bolehkah saya mendail dengan alamat/antara muka tertentu di Golang?

Apabila Go muncul sebagai bahasa pengaturcaraan sistem, pengguna secara semula jadi bertanya tentang lanjutan keupayaan rangkaian. Satu pertanyaan sedemikian berkisar tentang mewujudkan sambungan melalui antara muka rangkaian yang ditentukan.

Untuk menangani perkara ini, mari kita periksa pakej bersih dan keupayaan pengendalian antara mukanya. Walaupun Go membolehkan kami mendapatkan semula antara muka dengan nama menggunakan InterfaceByName(), pengambilan semula alamat IP seterusnya mendedahkan sedikit kerumitan.

Kaedah Addrs() mengembalikan sekeping alamat, termasuk alamat IPv4 dan IPv6. Memilih alamat pertama menganggap ia sepadan dengan alamat sumber antara muka, yang mungkin tidak selalunya benar. Selain itu, jenis alamat yang diambil ialah *net.IPnet, merangkum kedua-dua alamat IP dan netmask yang berkaitan.

Untuk mewujudkan sambungan TCP dengan alamat setempat tersuai, kita perlu membina net. Objek TCPAddr. Objek ini memerlukan alamat IP tertentu, bukan jenis net.IPnet. Oleh itu, kita mesti mengekstrak alamat IP daripada objek *net.IPnet yang diambil semula.

Kod yang disediakan menunjukkan proses ini dengan mencipta TCPAddr baharu dengan alamat IP yang diekstrak:

ief, err := net.InterfaceByName("eth1")
if err != nil {
    log.Fatal(err)
}
addrs, err := ief.Addrs()
if err != nil {
    log.Fatal(err)
}
tcpAddr := &net.TCPAddr{
    IP: addrs[0].(*net.IPNet).IP,
}
Salin selepas log masuk

Oleh mematuhi langkah-langkah ini, pembangun boleh mewujudkan sambungan rangkaian dengan berkesan melalui alamat dan antara muka tertentu di Golang, memanfaatkan fleksibiliti yang disertakan dengan pengaturcaraan sistemnya kebolehan.

Atas ialah kandungan terperinci Bolehkah saya Tentukan Antara Muka dan Alamat Rangkaian Apabila Mendail dalam Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan