云外归鸟工作室网站
标题:
鸟哥进,异步套接字的2个方法是我这么理解的么?
[打印本页]
作者:
shier2817
时间:
2011-4-24 22:34
标题:
鸟哥进,异步套接字的2个方法是我这么理解的么?
是否可写
方法
操作系统支持:Windows 所属对象:
异步套接字
当前套接字是否可以发送数据(主要有于客户端)。
语法:
逻辑型
异步套接字
.是否可写 (
)
是否可读
方法
操作系统支持:Windows 所属对象:
异步套接字
当前套接字是否可以接收数据(主要有于服务器端)。
语法:
逻辑型
异步套接字
.是否可读 (
)
===========================================
我不太清楚这两个方法是干什么用的,我这样理解对不对:
比如我现在将要发送数据A,但是我不确定是不是这个套接字目前正在发送别的数据呢。。。所以,这个时候我用一下“是否可写”方法来判断,要是真,说明他没在发送别的数据,就可以立即发送这个数据A了。。。
而这个“是否可读”是用于UDP的?还是说仅仅在“数据到达”事件中有效???
如果(上面我对“是否可写”的理解正确)
“是否可写”要是返回假,请问我要发送数据A需要等到什么时候?用循环判断“是否可写”为真吗?
否则
我需要用什么办法判断这个套接字是不是在忙?我能不能用他发送数据A呢??
===============================================
再说仔细点吧:
我现在做的是个 客户端一个套接字与服务器连接,服务器一个套接字接受连接请求,复制N个套接字组件与客户端传输数据,服务端大部分时候是被动模式的,就是说客户端对服务端是一问一答的方式,客户端提出一个功能请求,服务端就从数据库等位置读出数据发送回去,这是所谓的B/S模式么?不太懂。
要是一直是一问一答,貌似我也用不到上面说的2个方法,但是我在运行期间,准备定时在几个时候,服务端主动向目前所有已连接的客户端发送一个通告数据,但是我在考虑的是,要是刚好某个客户端目前正在向服务端提出功能请求,而我在这个时候主动向该客户端发送数据,是不是就会出问题???这个问题要怎么解决呢?用上面的“是否可写”好使么???
谢谢大哥了。。。
作者:
云外归鸟
时间:
2011-4-25 00:25
用于TCP吧
对方可以接收数据,就是可写,自己可以接收数据,就是可读
作者:
shier2817
时间:
2011-4-25 02:18
不是。。。您这两句够我迷糊半天的。。比如我上面的情况:
我服务端到了定时发送的时候,循环遍历那些复制出来的套接字,使用“是否可写”,为真的话就代表当时这个客户端没在请求别的数据对不???
要是为假的话,我是不是需要循环或以其他方式等待直到为真才行???
作者:
elover123
时间:
2011-4-25 07:33
大鸟说的很清楚啊,建议你看看套接字的教材熟悉一下相关知识!
作者:
云外归鸟
时间:
2011-4-25 11:58
本帖最后由 云外归鸟 于 2011-4-25 12:00 编辑
和有没有数据发送来的事件无关的
是与当前连接方的网络就绪状态有关,连接上未必就立即可以接收或发送数据的
比如客户断电掉线了,但没有断线的事件反馈,这时套接字就不能写入了
作者:
shier2817
时间:
2011-4-25 15:05
哦。。。明白了。。。感谢您的热心,谢谢!
欢迎光临 云外归鸟工作室网站 (http://www.ywgn.net/)
Powered by Discuz! X3