echo.c, echoclient.c, schserveri.c 를 인클루드 해야하므로 csapp.c 와 같은 파일에 둔다. 해당 포스팅은 코드 리뷰를 위한 글이 아니므로 따로 코드를 올려두지 않았다.
책의 내용에 따라 3개의 파일을 작성한다.
gcc -o echoserveri echoserveri.c echo.c csapp.c -lpthread
를 통해 컴파일을 한다.
→ 딱 봐도 그전에 쓰던 코드랑 다르다. 왜냐하면, csapp.c 또는 csapp.h 안에서 pthread(POSIX 쓰레드)를 사용하는데, 컴파일 할 때 -lpthread 옵션을 주어 pthread 관련 심볼들을 찾게 해준다.
tiny와 Proxy 서버는 makefile를 통해 해결을 해주지만, 정글이 배포한 파일에는 해당 echo 관련된 내용이 없으므로 해당 방식으로 컴파일 해야한다.
이제 해당 명령어를 통해 서버를 실행시킨다. 난 포트번호는 12345로 했다. 낮은 숫자는 하지 말자(22, 30 등)
./echoserveri [포트번호]
그럼 이러한 결과를 볼 수 있는데, 서버가 실행된 것이다.
Connected to (localhost, 44522)
이제 SSH 연결을 하나더 띄운다. 리눅스는 다중 사용자 연결을 지원해서 같은 유저로 연결해도된다. 다음과 같이 작성하여 연결한다.
만약, 텔넷 설치 안됐으면 첫번째 명령어부터 수행한다.
su
비밀번호 입력
apt install telnet
telnet 127.0.0.1 12345
위와 같이 작성하여 접속 완료하면,
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
위와 같이 뜨며 접속이 완료된다.
이제 글자나 숫자를 쓰면서 되돌아 오는지 확인한다. 추가로 아까 서버를 열었던 SSH로 돌아가서 해당 바이트 수만큼 뜨는지 확인하면 된다.
server received 5 bytes
서버를 끝낼 땐 서버쪽 SSH 에서 Ctrl + C를 통해 서버를 닫으면 된다.(클라이언트도 접속 해제됨)
[코드 분석은 추후에 진행 예정]