UNIX网络编程学习(3)--简单时间获取服务器程序
2012-03-20 19:55
399 查看
#include "unp.h" #include <time.h> int main(int argc, char **argv) { int listenfd, connfd; struct sockaddr_in servaddr; char buff[MAXLINE]; time_t ticks; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(10086); /* daytime server */ Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); Listen(listenfd, LISTENQ); for ( ; ; ) { connfd = Accept(listenfd, (SA *) NULL, NULL); ticks = time(NULL); snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks)); Write(connfd, buff, strlen(buff)); Close(connfd); } }
上面,之所以用10086号端口,而不用13号,是可能运行时发生bind失败:permission denied的错误。在前面的客户端代码中也把端口号改为10086既可以正确演示程序了。代码中用到了包裹函数。类似下面的代码:
void Bind(int fd, const struct sockaddr *sa, socklen_t salen) { if (bind(fd, sa, salen) < 0) err_sys("bind error"); } void Connect(int fd, const struct sockaddr *sa, socklen_t salen) { if (connect(fd, sa, salen) < 0) err_sys("connect error"); } void Getpeername(int fd, struct sockaddr *sa, socklen_t *salenptr) { if (getpeername(fd, sa, salenptr) < 0) err_sys("getpeername error"); }
相关文章推荐
- UNIX网络编程1.5一个简单的时间获取服务器程序1.6客户服务器程序索引表
- 《UNIX网络编程》第一章——一个简单的时间获取客户端/服务器程序
- 一个简单的时间获取服务器程序
- 一个简单的时间获取客户端——服务器程序
- 【unix网络编程】第一章简单的时间获取例程
- UNIX网络编程 -- -- 一个简单的时间获取客户程序
- UNIX网络编程笔记(2):一个简单的时间获取程序
- 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间
- UINX 网络编程学习(2)--简单的时间获取客户程序
- 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间
- Unix网络编程实践:时间获取服务器程序
- Unix网络编程(卷一)-第一个简单的时间获取程序
- 一个简单的时间获取客户端/服务器程序
- Unix网络编程:从入门到放弃——一个简单的时间获取程序
- 简单的时间获取程序-unix网络编程
- 简介(1)-概述、一个简单的时间获取客户程序
- 获取倒计时距离某一时间点的时间,判断身份证,电话号码格式是否正确的简单封装
- UNIX网络编程——非阻塞connect:时间获取客户程序
- 写了一个简单的第三方库,功能包括包括转化时间,计算动态行高,获取缓存文件在沙盒的路径
- 安卓开发学习心得-------时间的获取(Calender)