#include #include #include #include #include void error_handling(const char * message); int main(int argc, char* argv[]) { int i; struct hostent *host; if(argc != 2) { printf("Usage : %s \n", argv[0]); exit(1); } host = gethostbyname(argv[1]); // 메인 함수를 통해서 전달된 문자열을 인자로 // gethostbyname함수를 호출하고 있다. if(!host) error_handling("gethostbyname error"); printf("Official name: %s \n", host->h_name); // ..
Chapter 08 도메인 이름과 인터넷 주소 DNS : Domain Name System 의 약자 , IP주소와 도메인 이름 사이에서의 변환을 수행하는 시스템을 가리킨다. DNS 의 중심에는 DNS 서버가 있다 도메인 이름 : 인터넷에서 서비스를 제공하는 서버들 역시 IP 주소로 구분이 된다. 그러나 기억하기 쉽지 않은 IP주소의 형태로 서버의 주소정보를 기억하는건 어렵기에 기억하기도 좋고 표현하기도 좋은 형태의 도메인 이름이라는 것을 IP 주소에 부여해서, 이것이 IP주소를 대신하도록 하고있다. DNS 서버 : 네이버에 접속하는 방법은 주소창에 ip인 222.122.195.5를 직접 입력하는것과 www.naver.com 을 입력하는 두가지의 ..
07-1 TCP 기반의 Half-close 일반적인 연결 종료의 문제점 리눅스의 close수호출과 윈도우의 closesocket함수호출은 완전종료를 의미 완전 종료는 데이터를 전송하는 것은 물론 수신하는 것 조차 더 이상 불가능한 상황을 의미한다. 호스트 A 가 마지막 데이터를 전송하고 나서 close 함수의 호출을 통해서 연결을 종료한다면 그 이후부터 호스트 A는 호스트 B가 전송하는 데이터를 수신하지 못한다. 결국엔 호스트 A가 반드시 수신해야 할 데이터라 할지라도 그냥 소멸되고 만다. 위 예시처럼 반드시 수신해야할 데이터가 소멸되지 않게 하기위해 스트림의 일부만종료(Half-close)하는 방법이 제공되고 있다. 일부를 종료한다는 것은 전송은 가능하지만 수신은 불가능한 상황 혹은 수신은 가능하지만 ..
lauch.json 파일에 "args" :["9190"] 이렇게 넣으면 int main(int argc, char* argv[]) 의 두번째 인자 argv[1] 값으로 9190 이 들어간다. 그런데 vscode에서 launch.json의 인자가 적용될려면 ctrl + f5 해야한다 아니면 vscode에 터미널에서 인자를 직접 넣어서 실행해도 된다. ./hello_client 9190 이런식으로 ./실행할파일명 인자