登录 注册 找回密码 开启辅助访问 商业用户中心 购物车有0件商品 切换到宽版
搜索
查看: 2798|回复: 5
打印 上一主题 下一主题

[求助] 鸟哥进,异步套接字的2个方法是我这么理解的么?

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-24 22:34:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
是否可写 方法   操作系统支持:Windows    所属对象:异步套接字
当前套接字是否可以发送数据(主要有于客户端)。
语法:  逻辑型  异步套接字.是否可写 (

是否可读 方法   操作系统支持:Windows    所属对象:异步套接字
当前套接字是否可以接收数据(主要有于服务器端)。
语法:  逻辑型  异步套接字.是否可读 (

===========================================
我不太清楚这两个方法是干什么用的,我这样理解对不对:
比如我现在将要发送数据A,但是我不确定是不是这个套接字目前正在发送别的数据呢。。。所以,这个时候我用一下“是否可写”方法来判断,要是真,说明他没在发送别的数据,就可以立即发送这个数据A了。。。
而这个“是否可读”是用于UDP的?还是说仅仅在“数据到达”事件中有效???

如果(上面我对“是否可写”的理解正确)
                 “是否可写”要是返回假,请问我要发送数据A需要等到什么时候?用循环判断“是否可写”为真吗?
否则
                我需要用什么办法判断这个套接字是不是在忙?我能不能用他发送数据A呢??

===============================================
再说仔细点吧:
我现在做的是个 客户端一个套接字与服务器连接,服务器一个套接字接受连接请求,复制N个套接字组件与客户端传输数据,服务端大部分时候是被动模式的,就是说客户端对服务端是一问一答的方式,客户端提出一个功能请求,服务端就从数据库等位置读出数据发送回去,这是所谓的B/S模式么?不太懂。

要是一直是一问一答,貌似我也用不到上面说的2个方法,但是我在运行期间,准备定时在几个时候,服务端主动向目前所有已连接的客户端发送一个通告数据,但是我在考虑的是,要是刚好某个客户端目前正在向服务端提出功能请求,而我在这个时候主动向该客户端发送数据,是不是就会出问题???这个问题要怎么解决呢?用上面的“是否可写”好使么???

谢谢大哥了。。。
回复

使用道具 举报

沙发
发表于 2011-4-25 00:25:42 | 只看该作者
用于TCP吧
对方可以接收数据,就是可写,自己可以接收数据,就是可读
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2011-4-25 02:18:20 | 只看该作者
不是。。。您这两句够我迷糊半天的。。比如我上面的情况:
我服务端到了定时发送的时候,循环遍历那些复制出来的套接字,使用“是否可写”,为真的话就代表当时这个客户端没在请求别的数据对不???
要是为假的话,我是不是需要循环或以其他方式等待直到为真才行???
回复 支持 反对

使用道具 举报

地板
发表于 2011-4-25 07:33:44 | 只看该作者
大鸟说的很清楚啊,建议你看看套接字的教材熟悉一下相关知识!
回复 支持 反对

使用道具 举报

5#
发表于 2011-4-25 11:58:52 | 只看该作者
本帖最后由 云外归鸟 于 2011-4-25 12:00 编辑

和有没有数据发送来的事件无关的
是与当前连接方的网络就绪状态有关,连接上未必就立即可以接收或发送数据的
比如客户断电掉线了,但没有断线的事件反馈,这时套接字就不能写入了
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2011-4-25 15:05:34 | 只看该作者
哦。。。明白了。。。感谢您的热心,谢谢!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表