AF_의 차이점은 무엇입니까?소켓 프로그래밍의 INET 및 PF_INET?
AF_의 차이점은 무엇입니까?소켓 프로그래밍의 INET 및 PF_INET?
AF_를 사용하는지 헷갈린다.INET 및 PF_INET의 경우socket()그리고.bind().
또한 ip-address를 지정하는 방법sin_addr필드?
Beej의 유명한 네트워크 프로그래밍 가이드는 다음과 같은 훌륭한 설명을 제공합니다.
일부 문서에서는 신비로운 "PF_INET"에 대한 언급을 볼 수 있습니다.이 괴물은 자연에서는 보기 드문 이상한 에테르성 동물이지만, 여기서 좀 더 명확히 하는 것이 좋을 것 같습니다.옛날에는 주소 패밀리("AF_INET"의 "AF"가 나타내는 것)가 프로토콜 패밀리("PF_INET"의 "PF"가 나타내는 것)에 의해 참조되는 여러 프로토콜을 지원할 수 있다고 생각되었습니다.
그런 일은 일어나지 않았다.아, 그렇군요.따라서 올바른 방법은 구조 sockaddr_in에서 AF_INET을 사용하고 socket()에 대한 호출에서 PF_INET을 사용하는 것입니다.그러나 실질적으로 AF_INET은 어디에서나 사용할 수 있습니다.W. 리처드 스티븐스가 그의 책에서 그렇게 했으니까, 내가 여기서 그렇게 할 거야.
Linux 커널 소스 코드에서 PF_를 찾았습니다.INET 및 AF_INET도 똑같아요.다음 코드는 Linux 커널 3.2.21 트리의 include/linux/socket.h, 204행에서 가져온 것입니다.
/* Protocol families, same as address families. */
...
#define PF_INET AF_INET
- AF = 주소 패밀리
- PF = 프로토콜 제품군
의미.AF_INET는, 인터넷으로부터의 주소, 특히 IP 주소를 나타냅니다. PF_INET프로토콜 내의 모든 것(일반적으로 소켓/포트)을 나타냅니다.
소켓 (2) 및 bind(2)의 man 페이지를 읽어보십시오.를 위해sin_addr필드를 설정하려면 다음과 같은 작업을 수행합니다.
struct sockaddr_in addr;
inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr);
실제로 AF_와 PF_는 동일합니다.위키피디아에는 당신의 혼란을 해소해줄 단어들이 몇 개 있다.
프로토콜 유형(패밀리)과 각각 사용할 수 있는 특정 주소 유형을 구별하는 소켓인터페이스의 원래 설계 개념.프로토콜 패밀리는 여러 가지 주소 유형을 가질 수 있습니다.주소 유형은 PF_ 대신 프리픽스 AF_를 사용하여 추가 심볼 상수에 의해 정의되었습니다.AF_identifier는 프로토콜 패밀리가 아닌 주소 유형을 다루는 모든 데이터 구조를 대상으로 합니다.그러나 프로토콜과 주소 유형의 분리 개념은 구현 지원을 찾지 못했고 AF_정수는 단순히 대응하는 프로토콜 식별자에 의해 정의되었기 때문에 AF_상수와 PF_상수의 구별은 유의미한 실질적인 결과가 없는 기술적 논거가 되었다.실제로, 두 가지 형태의 적절한 사용에는 많은 혼란이 존재한다.
AF_INET = 주소 형식, 인터넷 = IP 주소
PF_INET = 패킷 형식, 인터넷 = IP, TCP/IP 또는 UDP/IP
AF_INET은 작성하는 소켓(이 경우 인터넷 프로토콜 주소)에 사용되는 주소 패밀리입니다.예를 들어 Linux 커널은 UNIX 소켓 및 IPX와 같은 29개의 다른 주소 패밀리와 IRDA 및 블루투스(AF_)와의 통신을 지원합니다.IRDA 및 AF_BLUTOUS는 낮은 레벨에서 사용할 수 있을지 의문입니다).
대부분의 경우 AF_로 고정됩니다.네트워크를 통한 소켓프로그래밍용 INET은 가장 안전한 옵션입니다.
즉, AF_INET 는, 인터넷으로부터의 주소, 특히 IP 주소를 가리킵니다.
PF_INET은 프로토콜 내의 모든 것(일반적으로 소켓/포트)을 나타냅니다.
헤더 파일 해결 방법을 확인하는 것이 문제입니다.시스템 컴파일러가 있는지 확인할 수 있습니다.
시스템의 경우 AF_INET == PF_인넷
AF == Address Family 및 PF == Protocol Family
프로토콜 패밀리 주소 패밀리와 같죠

중요한 상황들이 있다.
AF_'INET 'socket()Cygwin에서는 소켓이 랜덤으로 리셋되거나 리셋되지 않을 수 있습니다.PF_INET에 관한 정보입니다.
Sygwin은 소켓프로그래밍에는 큰 혼란이지만 AF_가 존재하는 현실세계의 경우입니다.INET과 PF_INET은 동일하지 않습니다.
언급URL : https://stackoverflow.com/questions/6729366/what-is-the-difference-between-af-inet-and-pf-inet-in-socket-programming
'source' 카테고리의 다른 글
| 모키토.메서드 인수 확인 (0) | 2022.08.15 |
|---|---|
| 특정 Java 버전을 Maven으로 설정하는 방법은 무엇입니까? (0) | 2022.08.14 |
| 데이터 속성 "article"이 이미 소품으로 선언되었습니다.대신 프롭 기본값 사용 (0) | 2022.08.14 |
| vue-cli 3을 사용하여 두 개의 번들을 별도로 생성하려면 어떻게 해야 합니까? (0) | 2022.08.14 |
| Vue.js 슬롯 내의 템플릿태그를 사용하려면 어떻게 해야 하나요? (0) | 2022.08.14 |