본문 바로가기
반응형

Programming34

[C/C++/소켓 프로그래밍] IP 주소 형식 변환 aton() ntoa() 이진형식으로의 변환 IP란? ip는 컴퓨터 네트워크에서 서로를 인지하고 통신하기 위해 부여하는 주소같은 것이다. Internet Protocol의 약자로 인터넷 통신 규약을 가리키는 말이다. 일상에서 전화번호와 같은 존재이다. 현재 IP는 v4와 v6로 나뉘며 v4는 0~255사이의 십진수를 쓰며 .으로 각각을 구분한다 (0.0.0.0~255.255.255.255) 이중 특정 ip는 예약되어 할당되지 않는 ip도 있지만 전부 사용한다면 약 43억개의 ip를 사용할 수 있다. v6는 v4로는 모든 기기에 할당할 ip가 부족하게 되자 나온 새로운 버젼이다. 기존 32비트에서 128비트로 증가하였다. 현재 ipv6는 우리나라에서 많이 쓰이진 않지만 아직은 과도기적 시기로 점차 대체해 나가는 중이다. v4에서 v6로 가면서 :로 .. 2021. 3. 10.
[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.
반응형