// 클라이언트는 서버에 비해 간단합니다.
// 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 |