반응형 Programming/Socket9 [C/C++/소켓프로그래밍]hton ntoh (htons,htonl,ntohs,ntohl) 빅 엔디안과 리틀 엔디안 변환 소켓에서 hton, ntoh함수 두 함수는 리틀 엔디안, 빅 엔디안을 사용하는 체계에서 빅엔디안 또는 리틀엔디안으로 변환해주는 함수이다. TCP/IP는 빅 엔디안 방식을 사용하므로 리틀 엔디안 체제에서 사용시 빅 엔디안으로의 자료 변환이 필요하다. 때문에 네트워크 소켓통신에서 빅엔디안, 리틀 엔디안을 다뤄야 한다. 시스템마다 빅엔디안 리틀엔디안 사용이 다르지만 보통은 빅엔디안을 사용한다 하지만 리틀엔디안을 사용하는 경우 빅엔디안형식으로의 변환이 필요하다. Big-endian Little-endian 빅 엔디안은 시작 주소에 데이터의 최상위 비트(MSB)가 오도록 저장한다. 리틀 엔디안은 시작주소에 최하위 비트(LSB)가 오도록 저장한다. 4byte int 0x1234 a a+1 a+2 a+3 Big-en.. 2021. 3. 6. C 소켓프로그래밍 Socketpair 소켓을 이용해서 응용프로그램과 자료를 읽고 쓸 수있다. sendbuffer에서 자동적으로 상대 receivebuffer에 보내고 read()를 이용해 전송받은 수신버퍼에서 자료를 가져온다. Socketpair의 헤더와 예제 #include #include return=socketpair(int domain,int type,int protocol,int sockp[2]);//return int type sys/types.h와 sys/socket.h를 포함해야하며 socketpair() int형을 반환하며 호출 성공시 0 실패시 -1을 반환한다. 코드는 두개의 소켓을 생성, 자동으로 연결된다. int sp[2]; if((socketpair(PF_LOCAL,SOCK_STREAM,0,sp)==0) printf(.. 2021. 3. 6. PF_INET과 AF_INET socket 함수를 사용하면서 도메인을 지정할 때 사용하는 PF_INET , 가끔 AF_INET이 보일때도 있다. 사실 선언된 내용은 동일한 내용이므로 어떤 상수를 사용해도 상관이 없다. PF_INET Protocol Family의 약자 AF_INET Address Family의 약자이다. PF_INET IPV4 인터넷 프로토콜 패키지 PF_INET6 IPV6 인터넷 프로토콜 패키지 PF_LOCAL 로컬 유닉스계열 소켓 프로그램 패밀리 PF_UNIX 로컬 유닉스계열 소켓 프로그램 패밀리 어떤 것을 사용해도 상관은 없지만, 소켓 프로토콜 생성에는 PF_INET를, 주소 구조체 생성에는 AF_INET을 사용하는 것이 암묵적인 룰이다. 2021. 3. 3. 이전 1 2 다음 반응형