반응형

서버와 클라이언트 프로그램의 분석

 

 

 

처음에 "(리눅스) 서버[server] 프로그램 구현" 글에서 

 

서버에 해당하는 server.c의 실행을 위해 아래의 명령문을 전달했다.

 

-

 

./server 9876

 

-

 

지금 까지 배운 내용으로 코드를 분석해보면 얼추 아는 것이 몇 개 나와서 이해가 될 수 있지만

 

main 함수에 전달된 9876은 PORT번호이다.

 

이렇듯 서버 소켓의 생성에 필요한 PORT번호를 전달하면서 프로그램을 실행했다.

 

반대로 소켓의 IP주소는 전달하지 않았는데 

 

그 이유는 INADDR_ANY라는 상수를 통한 IP주소의 초기화가 되서 그렇다.

 

-

 

그리고 "(리눅스) 클라이언트[client] 프로그램 구현" 글에서

 

클라이언트에 해당하는 client.c의 실행을 위해 아래와 같이 전달했다.

 

-

 

./client 127.0.0.1 9876

 

-

 

서버 프로그램의 실행방식과 비교하면

 

가장 두드러진 차이점은 IP주소 정보를 전달하고 있다는 것이다.

 

127.0.0.1을 가리켜 "루프백 주소(Loopback address)"라고 하며

 

이는 컴퓨터 자신의 IP주소를 의미한다.

 

위에 하이퍼링크로 되어 있는 글의 서버와 클라이언트 프로그램은 

 

하나의 컴퓨터에서 실행되는 상황을 연출했기 때문에

 

클라이언트가 연결할 서버 소켓의 주소로 자기 자신의 컴퓨터를 의미하는

 

127.0.0.1을 전달한 것이다.

 

물론 이를 대신해서 실제 컴퓨터의 IP주소를 입력해도 프로그램은 동작한다.

 

게다가 서버와 클라이언트를 서로 다른 두대의 컴퓨터에서 각각 실행할 경우에는

 

이를 대신해서 서버의 IP주소의 입력하면 프로그램은 정상 동작을 하게 된다.

 

-

 

이제 다음 포스팅에서 bind함수를 봐보자

반응형

+ Recent posts