Chinaunix首页 | 论坛 | 博客
  • 博客访问: 204667
  • 博文数量: 23
  • 博客积分: 534
  • 博客等级: 下士
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-20 16:27
文章分类

全部博文(23)

文章存档

2015年(1)

2012年(21)

2011年(1)

分类: C/C++

2012-01-12 23:03:13

intro/daytimetcpcli.c:
  1. //引用一堆文件
  2. #include    "unp.h"

  3. //正规写法,正常执行后返回0,所以为int型
  4. int
  5. //argc为参数个数,argv哥参数数组,之所以用指针的指针,是因为声明的是char型,如果是只是指针型的话,就只能保存一个字符了,而声明为指针的指针,就相当于一个二位数组,对于没怎么接触c的人来说,很有技巧哦~
  6. main(int argc, char **argv)
  7. {
  8.     int                    sockfd, n;
  9.     char                recvline[MAXLINE + 1];
  10.     struct sockaddr_in    servaddr;

  11.     if (argc != 2)
  12.         err_quit("usage: a.out ");

  13.     if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
  14.         err_sys("socket error");

  15.     bzero(&servaddr, sizeof(servaddr));
  16.     servaddr.sin_family = AF_INET;
  17.     servaddr.sin_port = htons(13);    /* daytime server */
  18.     if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
  19.         err_quit("inet_pton error for %s", argv[1]);

  20.     if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
  21.         err_sys("connect error");

  22.     while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
  23.         recvline[n] = 0;    /* null terminate */
  24.         if (fputs(recvline, stdout) == EOF)
  25.             err_sys("fputs error");
  26.     }
  27.     if (n < 0)
  28.         err_sys("read error");

  29.     exit(0);
  30. }

阅读(1369) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~