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, }
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!