본문 바로가기

IT

timeclnt.c

// 클라이언트는 서버에 비해 간단합니다.

// 1. 소켓을 만들고

// 2. 접속합니다.

// 끝.


// 어때요, 참 쉽죠??



#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <netdb.h>

main(int argc, char *argv[])

{

        struct sockaddr_in      servadd;

        struct hostent  *hp;

        int     sock_id, sock_fd, messlen;

        char    message[BUFSIZ];

        sock_id = socket(AF_INET, SOCK_STREAM, 0);

        bzero(&servadd, sizeof(servadd));

//      hp = gethostbyname(argv[1]);                                               이 부분은 서버에 쓰는거. (서버라면 이렇게)

//      bcopy(hp->h_addr, (struct sockaddr *)&servadd.sin_addr, hp->h_length);  자기 주소를 알아야 할 때

        servadd.sin_addr.s_addr = inet_addr(argv[1]);          // 클라이언트는 보통 목적지를 알고 가기 때문에

        servadd.sin_port = htons(atoi(argv[2]));                    // 이런 식으로 바로 집어 넣는다.

        servadd.sin_family = AF_INET;

        connect(sock_id, (struct sockaddr *) &servadd, sizeof(servadd)); // 서버의 bind과 같이, connect의 윗부분에서 

        messlen = read(sock_id, message, BUFSIZ);                                  // 목적지 정보의 변화가 있습니다.

        printf("%s", message);

        close(sock_id);

        return 0;

}

'IT' 카테고리의 다른 글

rlsd.c  (0) 2014.11.23
rls.c  (0) 2014.11.23
timeserv.c  (0) 2014.11.19
popen example  (0) 2014.11.19
tiny bc  (0) 2014.11.19