4.11 日期/时间的程序
来源:互联网 发布:兴业银行淘宝白金卡 编辑:程序博客网 时间:2024/05/21 17:14
服务器端的代码:
收到客户端连接请求后,输出客户端的地址,端口,同时将时间信息发送给客户端
#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <errno.h>#include <string.h>#include <time.h>#include <unistd.h>#define SIN_PORT 9999#define BUFLEN 256int main(int argc, char **argv){ int listenfd, connfd; struct sockaddr_in servaddr; char buf[BUFLEN]; time_t ticks; listenfd = socket(AF_INET, SOCK_STREAM, 0); if (listenfd < 0) { printf("socket error :%s\n", strerror(errno)); return -1; } servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SIN_PORT); servaddr.sin_addr.s_addr = htonl(INADDR_ANY); if (bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0) { printf("bind error:%s\n", strerror(errno)); close(listenfd); return -1; } if (listen(listenfd, 3) < 0) { printf("listen error:%s\n", strerror(errno)); close(listenfd); return -1; } struct sockaddr_in clientaddr; int len; for (;;) { len = sizeof(clientaddr); connfd = accept(listenfd, (struct sockaddr*)&clientaddr, &len); if (connfd < 0) { printf("accept error:%s\n", strerror(errno)); close(listenfd); return -1; } printf("connection from %s, port:%d\n", inet_ntop(AF_INET, &clientaddr.sin_addr, buf, sizeof(buf)), htons(clientaddr.sin_port)); ticks = time(NULL); snprintf(buf, sizeof(buf), "%.24s\r\n", ctime(&ticks)); write(connfd, buf, strlen(buf)); close(connfd); } return 0;}
客户端的代码:
调用connect后,用getsockname输出内核分配给本地的地址及端口
#include <netinet/in.h>#include <stdio.h>#include <arpa/inet.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <sys/socket.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; } struct sockaddr_in tmp; int len; getsockname(sockfd, (struct sockaddr*)&tmp, &len); printf("addr=%s, port=%d\n", inet_ntoa(tmp.sin_addr), ntohs(tmp.sin_port)) ; int cnt = 0; while ((n = read(sockfd, buf, RECVLINE)) > 0) { buf[n] = 0; cnt++; if (fputs(buf, stdout) == EOF) { printf("fputs error:%s\n", strerror(errno)); close(sockfd); return -1; } } //printf("cnt=%d n=%d\n", cnt, n); if (n < 0) { printf("read error:%s\n", strerror(errno)); } exit(0); return 0;}
0 0
- 4.11 日期/时间的程序
- 1.2 日期/时间的程序
- c/c++日期时间的计算程序
- 简单的时间/日期客户端&服务器程序
- 一个简单的时间和日期程序
- <小程序>日期选择器的起始时间极限值
- 小程序中的时间日期 与 字符串的转化
- 日期时间去掉日期后面的时间
- sap的日期,时间
- 时间日期的计算
- 日期时间的转换
- 时间日期的操作
- 日期时间的操作
- 日期时间的计算
- 时间日期的控制
- 日期、时间的用法
- 时间日期的转换
- 日期-时间的联动
- NYOJ 题目298 点的变换(数学,矩阵相乘,模板经典)
- 魔兽争霸---------常见简称
- Java 枚举类型
- cocos2dx 制作单机麻将(六)
- python threading示例
- 4.11 日期/时间的程序
- 【树状数组】CF 459D Pashmak and Parmida's problem
- 服务器开发之内存<一> 小片内存的管理
- 锋利的SQL-基于窗口的排名计算
- Redhat use CentOS YUM source
- LeetCode-Implement strStr()
- 湖大训练赛第十场 Deepest Station
- 一些shader
- Servlet3.0新特性讲解