개발 환경 준비하기
소켓 프로그래밍은 다행히 무거운 도구가 거의 필요 없습니다. Python과 C 컴파일러, 그리고 통신 상태를 들여다보는 작은 진단 도구 몇 개면 충분합니다. 이 장에서 운영체제별로 환경을 갖추고, 앞으로 자주 쓸 도구들과 가볍게 인사를 나누겠습니다.
Python 준비하기
이 책은 Python 3.13을 기준으로 합니다. 소켓 예제는 대부분 표준 라이브러리만 쓰기 때문에, 추가 설치 없이 Python만 있으면 바로 시작할 수 있습니다.
터미널에서 다음 명령으로 버전을 확인합니다.
# 파일: 터미널python3 --version
Python 3.13.1
3.10 이상이면 이 책의 예제는 대부분 그대로 동작합니다. 버전이 낮거나 Python이 없다면 공식 사이트나 운영체제의 패키지 관리자로 설치합니다.
C 컴파일러 준비하기
C 예제를 따라가려면 컴파일러가 필요합니다. 리눅스에서는 gcc, macOS에서는 clang이 표준이며, 두 명령은 거의 같은 방식으로 동작합니다.
# 파일: 터미널cc --version
리눅스에서 컴파일러가 없다면 우분투 기준으로 build-essential 패키지를 설치합니다. macOS에서는 터미널에 xcode-select --install을 입력하면 명령줄 개발 도구가 설치됩니다.
운영체제별 주의점
소켓 API는 운영체제마다 미묘하게 다릅니다. 이 책은 리눅스와 macOS를 기본으로 합니다. 둘 다 유닉스 계열이라 BSD 소켓 API를 거의 동일하게 제공하기 때문입니다.
윈도우는 사정이 조금 다릅니다. 윈도우의 소켓 API는 Winsock이라 불리며, 초기화 절차나 함수 이름이 일부 다릅니다. 그래서 윈도우 사용자에게는 WSL을 권합니다. WSL은 윈도우 안에서 진짜 리눅스 환경을 띄워 주는 기능으로, 이 책의 모든 예제가 리눅스와 똑같이 동작합니다. 윈도우 검색창에서 "WSL 설치"를 찾아 우분투를 설치하면 됩니다.
Python 예제는 운영체제 차이를 Python이 상당 부분 흡수해 주어 윈도우에서도 대체로 잘 돌아갑니다. 하지만 C 예제와 일부 고급 기능은 유닉스 계열을 전제로 하므로, 책 전체를 매끄럽게 따라가려면 리눅스나 macOS, 또는 WSL을 권합니다.
진단 도구와 인사하기
소켓 프로그램을 짜다 보면 "지금 이 포트가 열려 있나", "연결이 정말 맺어졌나"를 확인하고 싶을 때가 많습니다. 이럴 때 쓰는 작은 도구들을 미리 만나 두겠습니다.
ss는 현재 시스템에서 열려 있는 소켓과 연결을 보여 줍니다. 다음 명령은 현재 듣고 있는 TCP 소켓들을 나열합니다.
# 파일: 터미널ss -tln
nc는 흔히 넷캣이라 부르는 만능 도구입니다. 명령 한 줄로 임시 서버나 클라이언트를 띄울 수 있어, 우리가 만든 프로그램을 시험할 때 상대역으로 요긴합니다. 예를 들어 다음 명령은 9000번 포트에 접속을 시도합니다.
# 파일: 터미널nc 127.0.0.1 9000
이 도구들은 책 곳곳에서 다시 등장합니다. 지금은 이런 친구들이 있다는 것만 기억해 두면 충분합니다. 환경이 준비되었으니, 이제 소켓이 무엇인지부터 차근차근 알아보겠습니다.