Bolehkah Anda Dail dengan Alamat Antara Muka Tertentu dalam Go?
Bahasa pengaturcaraan Go menyediakan fungsi yang luas untuk operasi rangkaian, termasuk keupayaan untuk mewujudkan sambungan menggunakan alamat antara muka tertentu. Walau bagaimanapun, ia tidak segera jelas sama ada ini boleh dilakukan dengan pustaka standard semasa.
Untuk bermula, anda boleh mendapatkan semula antara muka rangkaian mengikut nama menggunakan InterfaceByName("interface_name"). Kaedah Addrs() antara muka kemudiannya boleh digunakan untuk mendapatkan senarai alamat yang dikaitkan dengan antara muka itu. Walau bagaimanapun, alamat ini daripada jenis *net.IPNet, yang mewakili alamat IP dengan netmask.
Untuk menggunakan alamat ini untuk mendail, anda perlu mengekstrak alamat IP dan mencipta TCPAddr baharu menggunakannya. Begini cara anda boleh melakukannya:
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, }
Setelah anda mempunyai TCPAddr, anda boleh menggunakannya sebagai alamat setempat semasa membuat Dialer baharu:
d := net.Dialer{LocalAddr: tcpAddr}
Dengan Dialer ini, anda boleh mewujudkan sambungan menggunakan alamat antara muka yang ditentukan. Berikut ialah contoh:
_, err = d.Dial("tcp", "google.com:80") if err != nil { log.Fatal(err) }
Dengan mengikuti langkah ini, anda boleh berjaya mendail sambungan menggunakan alamat antara muka tertentu dalam Go.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendail Sambungan Rangkaian Menggunakan Alamat Antara Muka Tertentu dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!