1.2 日期/时间的程序

来源:互联网 发布:网络恶意诽谤刑法 编辑:程序博客网 时间:2024/05/14 23:58

服务器端的代码:

收到客户端的连接请求,获取当前时间,发送给客户端

#include <netinet/in.h>#include <stdio.h>#include <arpa/inet.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <time.h>#define RECVLINE 128#define LISTENQ 3int main(int argc, char** argv){    int sockfd, n;    char buf[RECVLINE];    struct sockaddr_in servaddr;        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {        printf("error socket : %s\n", strerror(errno));        return -1;    }    servaddr.sin_family = AF_INET;    servaddr.sin_port = htons(13);    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);       if (bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {        printf("bind error: %s\n", strerror(errno));        close(sockfd);        return -1;   }       if (listen(sockfd, LISTENQ) < 0) {        printf("listen error;%s\n", strerror(errno));        close(sockfd);        return -1;   }   for (;;) {        int connfd = accept(sockfd, (struct sockaddr*)NULL, NULL);        if (connfd < 0) {            printf("accept error:%s\n", strerror(errno));            close(sockfd);            return -1;        }        time_t ticks = time(NULL);        snprintf(buf, RECVLINE, "%.24s\n", ctime(&ticks));        write(connfd, buf, strlen(buf));        close(connfd);   }    return 0;}

客户端的代码:

收到服务器端返回的时间信息,输出到stdout

#include <netinet/in.h>#include <stdio.h>#include <arpa/inet.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#define RECVLINE 128int main(int argc, char** argv){    int sockfd, n;    char buf[RECVLINE];    struct sockaddr_in servaddr;    if (argc != 2) {        printf("usage: a.out <IPADDRESS>\n");        return -1;    }        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {        printf("error socket : %s\n", strerror(errno));        return -1;    }    servaddr.sin_family = AF_INET;    servaddr.sin_port = htons(13);   if (inet_pton(AF_INET, argv[1], &(servaddr.sin_addr)) <= 0) {       printf("error inet_pton: %s\n", strerror(errno));       close(sockfd);       return -1;    }   if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) {        printf("connect error: %s\n", strerror(errno));        close(sockfd);        return -1;   }    while ((n = read(sockfd, buf, RECVLINE)) > 0) {        buf[n] = 0;        if (fputs(buf, stdout) == EOF) {            printf("fputs error:%s\n", strerror(errno));            close(sockfd);            return -1;        }    }    if (n < 0) {        printf("read error:%s\n", strerror(errno));    }    exit(0);    return 0;}


0 0
原创粉丝点击