>  기사  >  백엔드 개발  >  Go에서 특정 네트워크 인터페이스 주소로 전화를 거는 방법은 무엇입니까?

Go에서 특정 네트워크 인터페이스 주소로 전화를 거는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-26 00:59:10810검색

How to Dial with a Specific Network Interface Address in Go?

Go에서 특정 네트워크 인터페이스 주소로 전화 걸기

네트워킹 영역에서 Go는 시스템 리소스에 대한 낮은 수준의 액세스를 제공하는 것을 목표로 합니다. 그러한 작업 중 하나는 특정 네트워크 인터페이스 주소를 사용하여 연결을 설정하는 기능입니다.

이를 달성하기 위해 Go 표준 라이브러리는 이름(예: "eth1")으로 인터페이스를 검색하는 InterfaceByName 함수를 제공합니다. 그러나 반환된 인터페이스의 Addrs 메소드에서 소스 주소를 추출하면 주소와 넷마스크를 모두 캡슐화하는 *net.IPnet 유형이 생성됩니다.

전화 걸기에 이 주소를 사용하려면 *net으로 변환해야 합니다. .IP 필드를 사용하는 TCPAddr:

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

이 수정된 TCPAddr을 사용하면 다음을 사용하여 전화 걸기 위한 로컬 주소를 지정할 수 있습니다. 다이얼러의 LocalAddr 필드:

d := net.Dialer{LocalAddr: tcpAddr}

로컬 주소를 적절하게 설정하면 원하는 네트워크 인터페이스 주소를 사용하여 연결을 설정하여 네트워크 트래픽이 원하는 인터페이스를 통해 라우팅되도록 할 수 있습니다.

위 내용은 Go에서 특정 네트워크 인터페이스 주소로 전화를 거는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.