ping源码代阅读(三)面向连接tcp/ip程序
来源:互联网 发布:知乎live付费 编辑:程序博客网 时间:2024/04/29 10:56
在ping源码代阅读(一)中,图片详细表述了服务器端和客户端的交互过程,在这里以代码的形式分析其过程.
服务器端:
bind到一个端口后,使用listen开始收听所有的请求,这里在内核创建了一个长度为10的队列,一有请求就会放入到队尾.accept从队头取出一个请求开始处理.然后向此请求写入数据.
s = socket(PF_INET,SOCK_STREAM,0); memset(&adr_srvr,0,sizeof adr_srvr); adr_srvr.sin_family = AF_INET; adr_srvr.sin_port = htons(atoi(srvr_port)); if ( strcmp(srvr_addr,"*") != 0 ) { adr_srvr.sin_addr.s_addr = inet_addr(srvr_addr); } else { adr_srvr.sin_addr.s_addr = INADDR_ANY; } len_inet = sizeof adr_srvr; z = bind(s,(struct sockaddr *)&adr_srvr, len_inet); z = listen(s,10); for (;;) { len_inet = sizeof adr_clnt; c = accept(s, (struct sockaddr *)&adr_clnt, &len_inet);for (i = 0; i < 6; i++){ time(&td); n = (int) strftime(dtbuf,sizeof dtbuf, "%A %b %d %H:%M:%S %Y\n", localtime(&td)); z = write(c,dtbuf,n);} close(c); }
客户端:
客户端连接到这个服务端口,最后这个请求将被执行,写回数据,在这里用read把传回的数据读出来,read每次只读了128的字节,所以这里需不断重复读.直到数据长度为0时终止.
s = socket(PF_INET,SOCK_STREAM,0); memset(&adr_srvr,0,sizeof adr_srvr); adr_srvr.sin_family = AF_INET; adr_srvr.sin_port = htons(atoi(srvr_port)); adr_srvr.sin_addr.s_addr = inet_addr(srvr_addr); len_inet = sizeof adr_srvr; z = connect(s,&adr_srvr,len_inet);while(1){ z = read(s,&dtbuf,sizeof dtbuf-1); dtbuf[z] = 0; /* NUL terminate string */ printf("Date & Time is: %s\n",dtbuf);} close(s);
如果知道这个过程如何完成之后,看图会更加形像.
- ping源码代阅读(三)面向连接tcp/ip程序
- ping源码代阅读(三)UDP数据报程序
- ping源码代阅读(一)
- tcp/ip ---------- ping程序
- ping源码代阅读(二) 基本知识介绍
- TCP IP详解(7)Ping程序
- [TCP/IP详解学习中] ping程序
- Ping程序在TCP/IP中的应用
- TCP/IP之四:ping程序
- TCP/IP读书笔记之ping程序
- TCP/IP 第7章 Ping程序
- TCP/IP协议-ICMP和 ping 程序
- TCP/IP之四:ping程序
- tcp-ip Ping Program
- TCP-IP详解卷1-07:Ping程序
- 《TCP/IP详解-协议》(7、8)Ping、Traceroute程序
- TCP/IP详解卷1 读书笔记:第七章 Ping程序
- 《TCP/IP详解 卷一:协议》读书笔记--Ping程序
- imp 内容显示乱码(??口口)
- 扎克伯格悼念乔布斯:是朋友也是导师
- VC程序中实现控件的动态生成与响应
- 苹果暂不召开发布会 乔布斯葬礼待定
- Superprime Rib特殊的质数肋骨
- ping源码代阅读(三)面向连接tcp/ip程序
- 乔布斯离世 苹果官方讣闻
- 悼文汇总:科技业界与政界悼念乔布斯
- uboot移植之命令烧写uboot,zImage.img,root
- Wordpress企业网站如何充分利用文章属性
- STM32序列——时钟学习
- 库克:iPad无可争议是全球最佳平板
- 记者现场直击:美国民众告别乔布斯
- 乔布斯在斯坦福大学2005年毕业典礼上演讲----[纪念乔布斯]