본문 바로가기
Computer Science/UNIX & Linux

[UNIX/Linux] ep11-1+) 소켓 프로그래밍 기초 함수 실습

by 클레어몬트 2024. 12. 3.

ex1. 잘 알려진 포트 번호를 입력받아 이에 해당하는 서비스 명을 출력하는 프로그램을 작성하라

#include <netdb.h>
#include <stdio.h>

int main() {
    struct servent* port;
    int pt;

    printf("Input port number: ");
    scanf("%d", &pt);

    port = getservbyport(htons(pt), NULL);
    if (port != NULL) {
        printf("name=%s, port=%d\n", port->s_name, ntohs(port->s_port));
    } else {
        printf("No service for %d\n", pt);
    }

    return 0;
}

 

 

 

ex2. /etc/hosts 파일에 특정 호스트 명이 있는지 확인하고 있으면 해당 IP 주소를 출력하는 프로그램을 작성하라

#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char host[256];
    in_addr_t addr;
    struct hostent* hp;
    struct in_addr in;

    printf("Input host name: ");
    scanf("%s", host);

    hp = gethostbyname(host);
    if (hp == NULL) {
        (void)printf("Host information not found\n");
        exit(2);
    }
    (void)memcpy(&in.s_addr, *hp->h_addr_list, sizeof(in.s_addr));
    printf("name=%s IP=%s\n", hp->h_name, inet_ntoa(in));

    return 0;
}

 

 

 

 

 

 

참고 및 출처: 시스템 프로그래밍 리눅스&유닉스(이종원)