programing

AF_의 차이점은 무엇입니까?INET 및 PF_INET 상수?

iphone6s 2023. 10. 29. 19:06
반응형

AF_의 차이점은 무엇입니까?INET 및 PF_INET 상수?

소켓 프로그래밍에 대한 예를 살펴보면 일부 사람들이AF_INET남들이 사용하는 동안에PF_INET. 또한 두 예제 모두 동일한 예제에서 사용되는 경우도 있습니다.문제는 그들 사이에 차이점이 있습니까?어떤 걸로 할까요?

만약 당신이 대답할 수 있다면, 또 다른 질문은...왜 이 두 개의 유사한 상수가 있습니까?


지금까지 발견한 것은:

socket맨페이지

(Unix) 소켓 프로그래밍에서는socket()function 은 다음 파라미터를 수신합니다.

int socket(int domain, int type, int protocol);

맨페이지에는 다음과 같이 적혀있습니다.

domain인수는 통신 도메인을 지정합니다. 이것은 통신에 사용될 프로토콜 패밀리를 선택합니다.이러한 패밀리는 <sys/socket>에 정의됩니다.h>아, 아.

그리고 맨페이지는 다음과 같이 언급합니다.AF_INET다른 사람들과 마찬가지로AF_의 상수domain매개 변수.그리고.NOTES같은 manpage의 섹션에서는 다음과 같이 읽을 수 있습니다.

프로토콜 패밀리에 대해 4.x BSD에서 사용되는 매니페스트 상수는 PF_입니다.UNIX, PF_INET 등과 AF_주소 패밀리에는 UNIX 등이 사용됩니다.그러나 이미 BSD man page에서는 "프로토콜 패밀리는 일반적으로 주소 패밀리와 동일하다"고 약속하고 있으며, 후속 표준에서는 모든 곳에서 AF_*를 사용합니다.

C 헤더

sys/socket.h실제로 이러한 상수를 정의하지는 않지만 대신 다음을 포함합니다.bits/socket.h. 이 파일은 대략 38개 정도로 정의됩니다.AF_상수와 38PF_다음과 같은 상수:

#define PF_INET     2   /* IP protocol family.  */
#define AF_INET     PF_INET

파이썬

파이썬 소켓 모듈은 C API와 매우 유사합니다.하지만 많은 것들이 있습니다.AF_상수가 하나뿐인PF_상수(PF_)PACKET).따라서 파이썬에서는 사용할 수 밖에 없습니다.AF_INET.

나는 이 결정이 오직 그들을 포함할 것이라고 생각합니다.AF_상수는 지도 원리 중 하나인 "하나의 분명한 방법이 있어야 한다, 그리고 가급적이면 단 하나의 분명한 방법이 있어야 한다," (피톤의 선)

기타정보

이 포럼은 일부 기록 정보가 포함된 이 오래된 메시지에 대한 링크를 게시합니다.

저는 위키피디아의 메모가 꽤 잘 요약되어 있다고 생각합니다.

프로토콜 유형(패밀리)과 각각이 사용할 수 있는 특정 주소 유형을 구분하는 소켓 인터페이스의 원래 설계 개념.프로토콜 패밀리는 여러 가지 주소 유형을 가질 수 있다고 가정했습니다.주소 유형은 접두사를 사용하여 추가 기호 상수로 정의되었습니다.AF_대신에PF_.AF_- 식별자는 프로토콜 패밀리가 아닌 주소 유형을 특별히 다루는 모든 데이터 구조에 사용됩니다.그러나 이 프로토콜과 주소 유형의 분리 개념은 구현 지원을 찾을 수 없었습니다.AF_- constants는 단순히 해당 프로토콜 식별자에 의해 정의되어 서로 구분됩니다.AF_sPF_중요한 실제적인 결과가 없는 기술적인 논쟁을 상수.실제로 두 양식의 적절한 사용에는 많은 혼란이 있습니다.

오늘 다른 이유를 생각해 내더라도 새로운 신원을 제시하지 않으면 많은 것들이 깨질 겁니다

언급URL : https://stackoverflow.com/questions/2549461/what-is-the-difference-between-af-inet-and-pf-inet-constants

반응형