摘要: 格式代码AABCABCDEFGH%SAABCABCDEFGH%5S####A##ABCABCDEFGH%.5SAABCABCDE%5.5S####A##ABCABCDE%-5SA####ABC##ABCDEFGHPrintf格式化字符串格式代码1-1212345123456789%d1-1212345123456789%6d#####1###-12#12345123456789%.4d0001-001212345123456789%6.4d##0001#-0012#12345123456789%-4d1####-12#12345123456789%04d0001-012123451234567 阅读全文
posted @ 2013-11-15 16:08 chunlinge 阅读(1002) 评论(0) 推荐(0)
摘要: (一)配置第一步----dns配置:安装好Ubuntu之后设置了静态IP地址,再重启后就无法解析域名。想重新设置一下DNS,打开/etc/resolv.confcat /etc/resolv.conf# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN内容是一段警告:说这个文件是resolvconf程序动态创建的,不要直接手动编辑,修改将被覆盖。果不其然,修改 阅读全文
posted @ 2013-11-05 17:19 chunlinge 阅读(3916) 评论(0) 推荐(0)
摘要: 在做网络服务的时候tcp并发服务端程序的编写必不可少。tcp并发通常有几种固定的设计模式套路,他们各有优点,也各有应用之处。下面就简单的讨论下这几种模式的差异:单进程,单线程在accept之后,就开始在这一个连接连接上的数据收接收,收到之后处理,发送,不再接收新的连接,除非这个连接的处理结束。优点: 简单。缺点: 因为只为一个客户端服务,所以不存在并发的可能。应用: 用在只为一个客户端服务的时候。多进程accept返回成功时候,就为这一个连接fork一个进程,专门处理这个连接上的数据收发,等这个连接处理结束之后就结束这个进程。优点: 编程相对简单,不用考虑线程间的数据同步等。缺点: 资源消耗大 阅读全文
posted @ 2013-11-04 12:19 chunlinge 阅读(1237) 评论(0) 推荐(0)
摘要: epoll是Linux内核为处理大批量句柄而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。一、epoll的优点支持一个进程打开大数目的socket描述符。IO效率不随FD数目增加而线性下降。内核微调。二、epoll的使用epoll有2种工作方式:LT和ET。 LT(leveltriggered,水平触发)是缺省的工作方式,并且同时支持block和no-blocksocket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,. 阅读全文
posted @ 2013-10-29 17:01 chunlinge 阅读(3781) 评论(0) 推荐(0)
摘要: 功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include #include intgetsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen);intsetsockopt(int sock, 阅读全文
posted @ 2013-10-24 12:03 chunlinge 阅读(350) 评论(0) 推荐(0)
摘要: /* server.c */#include #include #include #include "error.h"#define MAXLINE 80#define SERV_PORT 8000int main(void){struct sockaddr_in servaddr, cliaddr;socklen_t cliaddr_len;int sockfd;char buf[MAXLINE];char str[INET_ADDRSTRLEN];int i, n;//socket IPv4 SOCK_DGRAMsockfd = Socket(AF_INET, SOCK 阅读全文
posted @ 2013-10-24 12:01 chunlinge 阅读(232) 评论(0) 推荐(0)
摘要: /* client.c */#include #include #include #include #include "error.h"#define MAXLINE 80#define SERV_PORT 8000int main(int argc, char *argv[]){struct sockaddr_in servaddr;int sockfd, n;char buf[MAXLINE];char str[INET_ADDRSTRLEN];socklen_t servaddr_len;//socketsockfd = Socket(AF_INET, SOCK_DG 阅读全文
posted @ 2013-10-24 11:59 chunlinge 阅读(198) 评论(0) 推荐(0)
摘要: 1. 点分十进制IP地址与二进制IP地址转换:inet_addr()函数将点分十进制的字符串转换为32位的网络字节顺序的IP信息。inet_network()函数将点分十进制的字符串转换为32位的主机字节顺序的IP信息。inet_ntoa()函数将32位的网络字节顺序的IP信息转换成点分十进制的字符串方式。inet_aton()函数将点分十进制的字符串方式IP信息转换成32位的网络字节顺序。2. 通过IP地址获取网络ID和主机ID:inet_lnaof()函数从某个IP地址中提取标准的主机ID。inet_netof()函数从某个IP地址中提取标准的网络ID。inet_makeaddr()函数将 阅读全文
posted @ 2013-10-24 11:55 chunlinge 阅读(582) 评论(0) 推荐(0)
摘要: #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024#define MAXEPOLLSIZE 10000/*setnonblocking - 设置句柄为非阻塞方式*/int setnonblocking(int sockfd){ if (fcntl(sockfd, F_SETFL, fcntl(sockfd, F_GETFD 阅读全文
posted @ 2013-10-24 11:46 chunlinge 阅读(603) 评论(0) 推荐(0)
摘要: 1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的…2.常用模型的缺点如果不摆出来其他模型的缺点,怎么能对比出Epoll的优点呢。2.1 PPC/TPC模型这 阅读全文
posted @ 2013-10-24 11:20 chunlinge 阅读(223) 评论(0) 推荐(0)