반응형
인터넷 주소의 초기화
이제부터 지금까지 배웠던 내용으로 소켓 생성과정에서 흔히 등장하는
인터넷 주소정보의 초기화 방법을 배워보자
-
-
위 사진의 코드에서 호출하는 memset 함수는 동일한 값으로 바이트단위 초기화할 때 호출하는 함수이다.
첫 번째 인자로 구조체 변수 addr의 주소 값이 전달되었으니, 초기화의 대상은 변수 addr이 된다.
두 번째 인자로 '0'이 전달되었으니 0으로 초기화가 이뤄진다.
세 번째 인자로 addr의 바이트 크기가 전달되었으니 addr 전체가 0으로 초기화된다.
이렇듯 memset 함수를 호출해서 addr을 전부 0으로 초기화하는 이유는
0으로 초기화해야 하는 sockaddr_in 구조체 멤버 sin_zero를 0으로 초기화하기 위함이다.
그리고 위 사진의 코드 마지막 문장에서 호출하는 atoi 함수는
문자열로 표현되어 있는 값을 정수로 변환해서 반환한다.
결론은 위의 코드에서는 문자열로 표현된 IP주소와 PORT번호를 기반으로 하는
sockaddr_in 구조체 변수의 초기화 과정을 보인 것이다.
참고로
위의 코드에서는 IP와 PORT번호를 코드에 직접 넣어주고 있지만
이는 좋은 방법이 아니다.
이렇게 구현하면 다른 컴퓨터에서 실행할 때마다 코드를 수정해야 하기 때문이다.
그래서 우리는 프로그램 실행 시 main 함수에 IP와 PORT번호를 전달해야한다.
그리고 우리는 그렇게 예제를 작성하고 있다.
반응형
'시작하지 말았어야 했던 것 > (Unix, Linux) C Socket' 카테고리의 다른 글
(리눅스) INADDR_ANY (0) | 2021.02.02 |
---|---|
(리눅스) 클라이언트의 주소정보 초기화 (0) | 2021.02.02 |
(리눅스) 문자열 정보를 네트워크 바이트 순서의 정수로(3) (0) | 2021.02.02 |
(리눅스) 문자열 정보를 네트워크 바이트 순서의 정수로(2) (0) | 2021.02.02 |
(리눅스) 문자열 정보를 네트워크 바이트 순서의 정수로 변환 (0) | 2021.02.02 |