獲取系統時間

#include <stdio.h>

#include <stdlib.h>

#include <strings.h>

#include <sys/socket.h>

#include <arpa/inet.h>

#include <netinet/in.h> //sockaddr_in頭文件

#include <sys/types.h>

#include <sys/uio.h>

#include <unistd.h>



int main(int argc,char** argv){

   int sock_fd;

   int connect_status;

   struct sockaddr_in serv_addr;

   char read_buf[1024];

   int n;

   if (argc < 2) {

        printf("Please input argc which can't less than 2. argc = %d \n", argc);

        exit(0);

    }

    

    sock_fd = socket(AF_INET, SOCK_STREAM,0);

   if (sock_fd < 0) {

        printf("sock_fd is error! \n");

        exit(0);

    }

    

    bzero(&serv_addr,sizeof(serv_addr));

    serv_addr.sin_family = AF_INET;

    serv_addr.sin_port = htons(13);//daytime系統服務端口號

    //serv_addr.sin_addr =

    inet_pton(AF_INET, argv[1], &serv_addr.sin_addr);

    

    connect_status = connect(sock_fd, (struct sockaddr*)&serv_addr,sizeof(serv_addr));

   if (connect_status < 0) {

        printf("connect is error! \n");

        exit(0);

    }

    

   while ((n = read(sock_fd, read_buf, 1024)) > 0) {

        read_buf[n] ='\0';

       if(fputs(read_buf, stdout) == EOF){

            printf("socket read is end! \n");

            exit(1);

        }

    }

   if (n < 0) {

        printf("read socket data is error! \n");

        exit(1);

    }

    

    exit(0);

return1;

}


//

inet_pton:將“點分十進制” -> “二進制整數”
int inet_pton(int af, const char *src, void *dst);
這個函數轉換字符串到網絡地址,第一個參數af是地址族,第二個參數*src是來源地址,第三個參數* dst接收轉換後的數據。
inet_pton 是inet_addr的擴展,支持的多地址族有下列:
af = AF_INET
src爲指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函數將該地址轉換爲in_addr結構體,並複製在*dst中。
af = AF_INET6
src爲指向IPV6的地址,函數將該地址轉換爲in6_addr的結構體,並複製在*dst中。
如果函數出錯將返回一個負值,並將errno設置爲EAFNOSUPPORT,如果參數af指定的地址族和src格式不對,函數將返回0。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章