네트워킹 공부할때 첨 연습한 소스인것 같다. 주석에 그렇게 적혀있으니... --;
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);
}