관리 메뉴

Gyejoong's Information

클라이언트 공용코드(daytime,qotd,echo,finger) 본문

Study/Socket programming

클라이언트 공용코드(daytime,qotd,echo,finger)

연계중 2016. 9. 30. 19:43
반응형

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

#include <sys/socket.h>

 

void err_quit(const char *message);

void err_sys(const char *message);

#define MAXLINE 4096

int main(int argc, char *argv[])

{

if(argc != 2)

err_quit("usage : ./(daytime,qotd,echo,finger)tcpcli <IPaddress>);

 

// 클라이언트의 소켓 생성

int sockfd;

if( (sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)

err_sys("socket error");

 

// 클라이언트의 포트번호 설정

struct sockaddr_in servaddr;

memset(&servaddr,0,sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(7,13,17,79); // echo, daytime, qotd, finger 순서로 포트번호임.

 

// 클라이언트의 IP 설정 (argv[1] 번째에 올 IP를 설정해줌.)

int ret;

if( (ret = inet_pton(AF_INET,argv[1],&servaddr.sin_addr)) < 0)

err_sys("inet_pton error");

else if(!ret)

err_quit("<IPaddress> error : format string error");

 

// 클라이언트와 서버를 연결

 if (connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) < 0)

err_sys("connect error");

}

 

void err_quit(const char *message)

{

fputs(message,stderr);

fputc('\n',stderr);

exit(1);

}

void err_sys(const char *message)

{

perror(message);

exit(1);

}

반응형
Comments