본문 바로가기

Hacked Brain/심심한 프로그래밍

finger 소스

 

네트워킹 공부할때 첨 연습한 소스인것 같다. 주석에 그렇게 적혀있으니... --;

finger 효과가 난다. --;. 정말 지금 보면 엉망이지만, 아주 간단하게

구현가능한 finger.

------------------------------------------------------------

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

void main(int argc,char **argv)
{
       int sockfd,newfd,size;
       struct sockaddr_in address;
       struct hostent *rh;
       char *buf;

       buf=malloc(82);
       sockfd=socket(AF_INET,SOCK_STREAM,0);  
       bzero(&address,sizeof(address));
       address.sin_family=AF_INET;
       address.sin_port=htons(79);   // 원하는 연결할  서버의 포트를 지정.
       rh=gethostbyname(argv[1]);   // 도메인으로 받은 인수를 숫자로 변환.
       memset(buf,0,82 );                   // 버퍼를 82의 크기로 셋팅 합니다.
       memcpy(&address.sin_addr.s_addr,rh->h_addr_list[0],4);  

// 변환된 연결할 서버의 주소를 address 함수에 복사
       connect(sockfd,(struct sockaddr *)&address,sizeof(address));

// 실제로 연결. connect 함수.
       write(sockfd,"/W ",3);  

       write(sockfd,"\n",1);  

//   그냥 바로 엔터를 침으로써 현재 연결된 모든 사람의 정보를 보여줍니다.
       while (read(sockfd,buf,80))   // 데이터 없을 때까지

       {
               fputs(buf,stdout);     // 출력

               memset(buf,0,82);    // 초기화

       }
       fflush(stdout);
       exit(1);
}