- 浏览: 271113 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
AndMacLinuXp:
试了下,不错!
printk内核调试 -
klose:
我引用你的文章,并做了简单的分析:这里贴出url:http:/ ...
linux系统调用fork, vfork, clone -
klose:
你上面提到的问题:free的问题。首先你可能疏忽了,stack ...
linux系统调用fork, vfork, clone -
qwe_rt:
HI ,非常nice的文章,在阅读过程中,我发现我的ubunt ...
linux手动添加开机启动的服务 -
suifeng:
谢谢分享, 受用中.
shell编程分支,循环
之前曾经提到过这个名词,套接口低潮限度。(以下都只针对TCP)
接收低潮限度(SO_RCVLOWAT):之前我们曾经使用过select函数,如果将套接口可读,也就是说套接口中有数据可以读出做为select的一个阻塞条件,则什么叫做有数据可读?其实就是指套接口中数据大小大于低潮限度。默认的低潮大小为1,也就是只要有数据到达就表示可读。
发送低潮限度(SO_SNDLOWAT):和上面一样,就是当你想对某个套接口执行write时候,如果空闲大小大于等于低潮限度就表示可写,也就是会从select函数返回。比如说下面的程序
#include "/programe/net/head.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "unistd.h"
#include "sys/wait.h"
#include "sys/select.h"
#include "sys/time.h"
#define MAXSIZE 100
#define LISTENQ 10
int main(int argc, char ** argv) {
int listenfd, connfd;
socklen_t client_len;
struct sockaddr_in client_socket, serv_socket;
char send[MAXSIZE + 1], recv[MAXSIZE + 1];
listenfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_socket, sizeof(serv_socket));
serv_socket.sin_family = AF_INET;
serv_socket.sin_addr.s_addr = htonl(INADDR_ANY);
serv_socket.sin_port = htons(atoi(argv[1]));
bind(listenfd, (struct sockaddr *)&serv_socket, sizeof(serv_socket));
listen(listenfd, LISTENQ);
client_len = sizeof(client_socket);
connfd = accept(listenfd, (struct sockaddr *)&client_socket, &client_len);
int recv_min_size = 6;
int flag = setsockopt(connfd, SOL_SOCKET, SO_RCVLOWAT, (void *)&recv_min_size, sizeof(int));
//设置接受低潮
int recv_min_size1;
socklen_t recv_min_len = sizeof(recv_min_size1);
getsockopt(connfd, SOL_SOCKET, SO_RCVLOWAT, (void *)&recv_min_size1, &recv_min_len);
if(flag >= 0)
printf("set SO_RCVLOWAT OK!!! SO_RCVLOWAT = %d\n", recv_min_size1);
else
printf("set SO_RCVLOWAT failed!!! SO_RCVLOWAT = %d\n", recv_min_size1);
for(;;) {
fd_set rest;
FD_ZERO(&rest);
FD_SET(1, &rest);
FD_SET(connfd, &rest);
int maxfdpl = 2;
if(maxfdpl < connfd + 1)
maxfdpl = connfd + 1;
int flag = select(maxfdpl, &rest, NULL, NULL, NULL); // 2
if(flag <= 0) {
printf("some error happend, sorry");
} else {
if(FD_ISSET(1, &rest)) {
int n = read(1, send, MAXSIZE);
send[n] = '\0';
write(connfd, send, n);
}
if(FD_ISSET(connfd, &rest)) {
int n = read(connfd, recv, MAXSIZE);
if(n == 0) {
printf("client closed\n");
break;
}
recv[n] = '\0';
printf("get message:%s", recv);
}
}
}
}
和之前的代码没有什么不同,只是增加了设置接受低潮。下面是客户端代码:
#include "/programe/net/head.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "sys/select.h"
#define MAXSIZE 100
int main(int argc, char ** argv) {
int sockfd;
struct sockaddr_in serv_socket;
int maxfdpl;
char send[MAXSIZE], recv[MAXSIZE];
if(argc != 2) {
printf("please input port");
exit(1);
}
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&serv_socket, sizeof(serv_socket));
serv_socket.sin_family = AF_INET;
serv_socket.sin_port = htons(atoi(argv[1]));
inet_pton(AF_INET, "192.168.1.235", &serv_socket.sin_addr);
connect(sockfd, (struct sockaddr *)&serv_socket, sizeof(serv_socket));
for(;;) {
fd_set rset;
FD_ZERO(&rset);
FD_SET(1, &rset);
FD_SET(sockfd, &rset);
maxfdpl = sockfd + 1;
select(maxfdpl, &rset, NULL, NULL, NULL); // 1
if(FD_ISSET(sockfd, &rset)) {
int n = read(sockfd, recv, MAXSIZE);
if(!n) {
printf("server closed\n");
break;
}
recv[n] = '\0';
printf("get message from server:%s\n", recv);
}
if(FD_ISSET(1, &rset)) {
int n = read(1, send, MAXSIZE);
send[n] = '\0';
write(sockfd, send, n);
}
}
close(sockfd);
exit(0);
}
运行就会发现如果你输入的字符个数少于6(包括回车),select会继续阻塞。(注:我测试了一下,低潮限度只是会对select造成影响,不会对read和write函数的阻塞造成影响)
发表评论
-
hdfs集群搭建
2014-05-11 17:19 1046网上很多hadoop集群搭建的文章,我这里只写下hdfs,不 ... -
网站性能优化
2013-10-25 10:43 0好久没写了,最近一直在做些互联网的一些东西。下面介绍些性能优 ... -
html5学习网站
2011-07-29 14:55 957htm5:http://www.w3school.com.cn ... -
HTTP下载
2011-02-09 15:24 1131HTTP下载的关键是修改Content-Type。 C ... -
28.sniffer程序2
2010-07-01 17:51 1802对前面27中sniffer中的一 ... -
27. sniffer程序
2010-06-30 11:51 5962网络抓包,必需从数据链路层开始抓取,至于原因之前在原始套接口中 ... -
java 和 linux c udp通信的样例
2010-05-28 11:58 2506一个简单的例子 java段(客户端) package ... -
26.原始套接字
2010-05-12 16:45 1837一个小程序: //发送方 #include <sys ... -
25.cookies和session
2010-05-10 15:21 973原文出自:http://blog.csdn ... -
24.SOCKET模拟HTTP请求
2010-05-07 14:11 5366HTTP请求头部样例: GET http://www.bai ... -
23.广播
2010-04-29 16:34 975如果想发送广播到目前为止只能使用AF_INET, SOCK_D ... -
22.非阻塞connect
2010-04-28 11:36 2781connect非阻塞套接口时候,一般使用在以下几种情况: ... -
21.非阻塞I/O
2010-04-27 16:54 2102设置一个I/O成为非阻塞很简单,只需要: int val = ... -
20.辅助数据 和 传输描述字
2010-04-26 15:53 2123打开一个文件或者一个 ... -
19.unix域协议与TCP UDP不同之处
2010-04-22 13:46 2674之前说过一些区别,但基本对我们编程来说没有太多影响,但以下几个 ... -
18.unix域协议
2010-04-21 16:47 2665UNIX域协议并不是一个真正的协议族,它是用在同一台主机上进行 ... -
17.I/O函数recvmsg与sendmsg
2010-04-20 15:58 12493想对于之前的几个IO函 ... -
16.I/O函数
2010-04-20 13:51 1286最早使用的read与write函 ... -
15.服务器守护进程
2010-04-16 17:44 1429前面提到过的服务器都占有控制终端。而有些进程并不需要控制终端。 ... -
14.udp与connect
2010-04-13 16:41 3260UDP在调用sendto发送数据 ...
相关推荐
12. "烂熟于心":形容对某事或某物非常熟悉,就像刻在心里一样。 此外,还有一些成语在特定情境中的应用: 13. "英姿飒爽":形容人的英俊威武,精神饱满。 14. "精神抖擞":表示人的精神状态非常好,充满活力。 15....
12. "烂熟于心":形容对某事或某物非常熟悉,就像刻在心里一样。 13. "英姿飒爽":形容人的仪表英俊,精神饱满,常用于形容军人或运动员。 14. "精神抖擞":形容精神饱满,充满活力。 15. "威风凛凛":形容气势威严...
12. 理想工作:描述你对理想工作环境和职责的理解。 13. 家庭介绍:简洁地提及家庭情况,但避免过于私人的话题。 14. 挫败经历:展示你的韧性与恢复能力。 15. 面试经历:诚实回答,展示你对不同公司的了解和选择。 ...
19. 心理健康与生理健康关系:钟南山院士指出心理状态对抵御疾病的能力有重大影响,情绪低潮可能导致生理健康下降80%。 20. 错构定义:错构是一种记忆错误,不是在病理状态下产生的信念。 21. 网购机票诈骗防范:...
9. 海岸地貌:后滨的界限位于低潮线和高潮线之间,而非浪基面与低潮线、浪基面与高潮线或高潮线与特高潮线之间。 10. 变质作用类型:在变质过程中,既有原矿物消失又有新矿物形成,但总体化学成分不变,这是交代...
9. 海岸地貌与沉积作用:海岸地貌中的沙粒大小受高潮、低潮和风力影响,通过地貌特征可以分析沉积过程。 10. 木麻黄的生态作用:木麻黄的种植主要用于防风固沙,保护海岸生态环境。 11. 时间与地理:清明节日期因...
1. 测深基准面:我国以理论最低潮面作为测深基准面。 2. 海图比例尺:近海水域的海图比例尺一般不得小于 1:2.5 万。 3. 高程基准:1956 年国家高程基准是使用青岛验潮站 1950~1956 年的验潮数据推算得到。1985 年...
1. 销售状况:自2010年10月20日开盘以来,项目处于销售低潮,客户积累不足,媒体广告推广暂停。 2. 成交特点:自住客户为主要购买群体,其中自由职业者占比最大;二房二厅一卫的户型最受欢迎。 3. 客户来源:口碑...
4. 应对心情低潮:寻找支持,保持乐观态度。 5. 容忍:学会宽容对待他人和自己。 良好的情绪管理特质包括: 1. 良好的内在修养:培养内心平静,增强自我控制。 2. 平衡的处世态度:不偏激,以平和心态看待事物。 3....
4. 面对心情低潮:学会调整心态,寻找激励自己的动力。 5. 包容力:接纳他人的错误和不足,展现宽容和理解。 沟通能力的提升也至关重要,包括: 1. 良好沟通:清晰、准确地表达自己的想法和需求。 2. 积极倾听:...
4. 面对心情低潮:找到自我调节的方法,如寻求支持、改变环境或调整心态。 5. 包容力:学会接纳他人的不同,增强理解和宽容。 三、沟通能力的提升 1. 良好沟通:清晰表达意图,理解对方立场。 2. 积极倾听:专心...
6. 坐标转换:在进行两套平面坐标系之间的四参数坐标转换时,至少需要3个公共点来确定转换关系。 7. GPS网无约束平差:主要用于剔除粗差基线,提高GPS网的精度和可靠性,而不是检查闭合环误差。 8. 水准测量平差:...
5. 情绪词汇与语境:题目中提到了词语在不同情境下的适用性,如“低潮”、“低回”、“低迷”等,它们都用来描述某种状态的消沉或低迷,但具体应用需要结合上下文。 6. 民事责任分配:在法律问题中,当动物造成他人...
4. 面对心情低潮:寻找支持系统,如朋友、家人或专业咨询。 5. 包容力:学会接受和理解他人的不同情绪,培养同理心。 沟通技巧是情绪管理的重要组成部分,包括: 1. 良好沟通:清晰、准确地表达自己的想法和感受。 ...
1. 沉湎酒色:企业家沉溺于酒色可能源于不同原因,如无法控制欲望、事业低潮寻求慰藉、补偿心理或短暂享乐主义。这些行为会分散注意力,影响决策质量,从而危害企业稳定。 2. 投资冒险主义:企业家往往在缺乏充足...
12. 潮汐规律:进港的最佳时间应避开高潮,考虑潮汐影响,24日的16时可能是低潮,较为适合大型船只进港。 13. 进港日期选择:考虑潮汐周期,27日的低潮时间可能比24日更有利于大吨位船舶进港。 14. 地貌识别:岱崮...
"白太阳"现象预示着太阳活动进入低潮期,太阳辐射、地表温度、地球降水和磁暴等活动会相应变化。 4. 地球公转:图3所示的地球公转轨道图中,①~②段代表夏至到秋分,②~③段代表秋分到冬至,③~④段代表冬至到...
1. 涨落潮、高潮、低潮和大小潮:海洋水面因引力变化而产生的周期性升降。 2. 引潮力:由月球和太阳引力差产生的地球局部变形和潮汐涨落的动力。 3. 太阳潮与太阴潮:分别由太阳和月球引力引起,其中太阴潮影响更为...
12. 电磁冲击钻原理:当开关S由闭合到断开瞬间,电路中磁场变化,产生反电动势,使得钻头M突然向右运动;B、C、D选项中,只要开关S保持闭合,变阻器滑片P的移动不会立即导致钻头运动。 13. 竖直振动的简谐运动:...
在无稿件发表的低潮期,仍要积极寻找选题,锻炼自己。 9. 心态调整:长时间的工作可能导致疲劳,要学会调整心态,如改变工作环境、与他人交流,以缓解压力。 10. 职业素养:记者需要具备全面的知识,能迅速适应新...