实验1 TCP时间/日期程序(Ubuntu环境)

871阅读 0评论2012-03-06 高傲的活着
分类:C/C++

客户端:
  1. #include "unp.h"
  2. int
  3. main(int argc,char **argv)
  4. {
  5.   int sockfd,n;
  6.   char recvline[MAXLINE + 1];
  7.   struct sockaddr_in servaddr;
  8.   if(argc!=2)
  9.      err_quit("usage:a.out");
  10.   if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
  11.    err_sys("socket error");

  12.    bzero(&servaddr,sizeof(servaddr));
  13.    servaddr.sin_family=AF_INET;
  14.    servaddr.sin_port=htons(13);
  15.    if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr)<=0)
  16.       err_quit("inet_pton error for %s,argv[1]");

  17.     if(connect(sockfd,(SA*)&servaddr,sizeof(servaddr))<0)
  18.       err_quit("connect error");

  19.      while((n=read(sockfd,recvline,MAXLINE))>0){
  20.        recvline[n]=0;
  21.       if(fputs(recvline,stdout)==EOF)
  22.       err_sys("fputs error");
  23.     }
  24.     if(n<0)
  25.       err_sys("read error");
  26.        exit(0);
  27. }
服务器端:
  1. #include "unp.h"
  2. #include <time.h>
  3. int
  4. main(int argc,char **argv)
  5. {
  6.     int listenfd,connfd;
  7.     struct sockaddr_in servaddr;
  8.     char buff[MAXLINE];
  9.     time_t ticks;
  10.     listenfd=Socket(AF_INET,SOCK_STREAM,0);
  11.     bzero(&servaddr,sizeof(servaddr));
  12.     servaddr.sin_family = AF_INET;
  13.      servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  14.      servaddr.sin_port = htons(13);
  15.      Bind(listenfd,(SA*)&servaddr,sizeof(servaddr));
  16.      Listen(listenfd,LISTENQ);
  17.      
  18.     for( ; ;){
  19.       connfd = Accept(listenfd, (SA *)NULL,NULL);
  20.        ticks=time(NULL);
  21.        snprintf(buff,sizeof(buff),"%.24s\r\n",ctime(&ticks));
  22.        Write(connfd,buff,strlen(buff));
  23.      Close(connfd);
  24.     }
  25. }
附件:
 datetime.rar   
 
参考文献:
http://blog.sciencenet.cn/u/wellwang
 
 
 
 
上一篇:PL/SQL解方程
下一篇:循环退出(编译器)