도메인 이름 : IP 주소의 별칭
gethostbyname() : 도메인 이름 문자열로부터 IP 주소 정보 얻는다
host=gethostbyname(argv[1]);
if(!host)
error_handling("Gethost... error");
printf("Official name: %s \n", host->h_name);
for(i=0; host->h_aliases[i]; i++)
printf("Aliases %d: %s \n", i+1, host->h_aliases[i]);
printf("Address type: %s \n",
(host->h_addrtype==AF_INET)?"AF_INET":"AF_INET6");
for(i=0; host->h_addr_list[i]; i++)
printf("IP addr %d: %s \n", i+1,
inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));

gethostbyname 함수 활용 예시
gethostbyaddr : IP주소를 이용해서 도메인 정보를 얻는다
소켓의 특성을 조회하거나 변경할 수 있다
getsockopt() : 옵션 확인
setsockopt() : 옵션 변경
클라가 먼저 연결을 끊으면 서버 재실행 문제 없다.
하지만 서버가 먼저 연결을 끊으면 (프로그램 종료하면) 서버 재실행 문제 생긴다.
3분 정도 기다려야 재실행 된다.
서버가 먼저 연결 종료를 요청핶기 때문에, 아직 TCP의 Time-wait 상태에 있기 때문이다.
클라 소켓은 PORT가 임의로 할당되기 때문에, Time-wait를 신경쓰지 않아도 된다.

optlen=sizeof(option);
option=TRUE;
setsockopt(serv_sock,SOL_SOCKET,SO_REUSEADDR,(void*)&option, optlen);
Nagle 알고리즘
int solution(int m, int n, vector<vector<int>> puddles) {
vvl grid = vvl(n+1,vl(m+1));
for(vi puddle : puddles)
{
grid[puddle[1]][puddle[0]] = -1;
}
grid[n][m]=1;
for(int i=n; 0<i; i--)
{
for(int j=m; 0<j; j--)
{
if(grid[i][j]==-1) continue;
if(grid[i][j-1]!=-1)
{
grid[i][j-1]+=grid[i][j];
grid[i][j-1]%=1000000007;
}
if(grid[i-1][j]!=-1)
{
grid[i-1][j]+=grid[i][j];
grid[i-1][j]%=1000000007;
}
}
}
return grid[1][1]%1000000007;
}
문제 조건 좌표가 vector 기준이 아니라 xy좌표축 기준이었다.
매뉴얼 읽기