关于select模型有关问题
发布时间:2011-07-03 07:15:46 文章来源:www.iduyao.cn 采编人员:星星草
关于select模型问题
每次用select去检测套接字集合中那些套接字有读和写的,当一个套接有过一次写操作后,以后每次都会检查该套接可以写,便会执行发送操作。但是读操作只有新的套接字连接和用户发送数据过来时,才会检测到,属于正常。请哪位大侠给我指点一番写操作为什么每次都会执行?
------解决方案--------------------
select检测写套接字的意思是,检测是否可写。具体写不写,随你便。
------解决方案--------------------
写和读的处理方式是不同的。
输入缓冲有数据的时候,才表明可以读(否则就会阻塞,或者返回error)
输出缓冲空的时候,就可以写。也就是说,一次写操作完成后,一直都是可写状态。
所以write的处理和read不一样,你应该自己维护每个socket可写状态标志。 每次对一个socket写了后(send/sendto),设为false,然后加入select检测,收到write后设写标志为true.
写之前要检测write标志,true的话就直接写,否则需要自己缓存下。
------解决方案--------------------
是有些不一样,windows网络编程 有讲
------解决方案--------------------
写操作是检测客户是否处于连接状态,你想写就写
读操作是客户发来数据则触发
------解决方案--------------------
你可以建一个发送缓冲区,如果数据没有一次性发送完成,当select检查该socket为可写状态时将剩余的部分发送出去就可以了。在构建FDSET的时候,只有当发送缓冲区不为空的时候(TCP连接的时候)才将socket加入到write fdset中进行检查,其他时候没必要检查可写状态。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
如果客户端的机子突然断了电,那服务端还能收到FD_CLOSE事件么?
如题.....
已查到解决方案(心跳包)
来人,结贴。。。
------解决方案...
-
IOCP使用上的一点看法讨论。
iocp的实现,在msdn和codeproject上面的例子都是创建一个iocp,然后所有socket加入该端口监视,n个工作线...
-
h264 与 RTP 的区别?
同样都是视频应用的协议,他们的关系或者在协议簇中的位置有什么区别?
------解决方案--------------------
H...
-
openmeetings错误 求解决
将doc文件上传时出现错误
错误代码:
Name: error
Value: 2011-6-4 12:54:14 com.artofsolving.jodconver...
-
为什么计算机网络中一定要有一个MAC层(MAC地址),既然MAC地址和IP地址是有一定的映射关系的,为什么不能只用其中一个地址通信就可以了,...
-
P2P软件有技术门槛吗?
讨论一下P2P软件的技术:
1.NAT穿越
2.UDP可靠传输
3.分块调度策略
...
http://hr.baidu.com/www/job/jobDe...
-
以TCP为写的服务器和客户端程序 无法通信
基于面向连接的TCP,写了一个服务器程序和一个客户端程序。服务器负责监听一个端口等待...
-
毕设啊,来不及了,谁做过 OFDMA动态资源分配算法 的 MATLAB仿真??
我们毕设的题目是“OFDMA动态资源分配算法的研究”,我在网上也荡了一...
-
关于UDP包传送的问题
最近在佛山移动做一个项目,这个项目已经过了初验,现在需要终验。但由于一个问题迟迟没有解决,不敢跟客户提终验...
-
udp通信数据接收转发
小弟最近在写流媒体转发服务器程序,从原始服务器发送过来的媒体包,需要1对多的转发给不同的client,在主程序中...