UNIX 获取服务器时间客户端程序

开始学习大师之作《UNIX 网络编程》,唯一不喜欢的是包裹函数

#include    "unp.h"

int main(int argc, char **argv)
{
    int sockfd, n;
    char recvline[MAXLINE + 1];
    struct sockaddr_in  servaddr;

    if (argc != 2)
        err_quit("usage: a.out <IPaddress>");

    /*
     * socket 函数创建一个网际(AF_INET)字节流(SOCK_STREAM)套接字
     * sockfd 是一个小整数描述符,唯一标示一次套接字连接活动
     * int socket(int domain, int type, int protocol) 
     * domain 通信协议的族
   * PF_UNIX,PF_LOCAL   本地通信    PF_X25  ITU-T X25 / ISO-8208协议
   * AF_INET,PF_INET    IPv4 Internet协议 PF_AX25 Amateur radio AX.25
   * PF_INET6   IPv6 Internet协议 PF_ATMPVC   原始ATM PVC访问
   * PF_IPX IPX-Novell协议    PF_APPLETALK    Appletalk
   * PF_NETLINK 内核用户界面设备    PF_PACKET   底层包访问
     */
    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        err_sys("socket error");

    bzero(&servaddr, sizeof(servaddr));//初始化网际套接字地址结构
    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons(13);    /* port 13 daytime server */
    if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)//从argv[1] 中获取IP地址,并且格式化
        err_quit("inet_pton error for %s", argv[1]);

 /*
  * int connect(int s, const struct sockaddr * name, int namelen)
  *  s:标识一个未连接socket
  * name:指向要连接套接字的sockaddr结构体的指针
  * namelen:sockaddr结构体的字节长度
  */
    if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)//servaddr 转 sockaddr
        err_sys("connect error");

    while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
        recvline[n] = 0;    /* null terminate */
        if (fputs(recvline, stdout) == EOF)
            err_sys("fputs error");
    }
    if (n < 0)
        err_sys("read error");

    exit(0);
}

转载于:https://blog.51cto.com/superhakce/2088098

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值