+ -
当前位置:首页 → 问答吧 → 关于select

关于select

时间:2011-12-06

来源:互联网

在使用select模式进行通信时,我发现对于套接字,只能够设置一种I/O操作,
比如:
FD_SET(Socket, &fRead);
FD_SET(Socket, &fWrite);
这样会使fWrite覆盖掉fRead。

我现在所遇到的问题是:因为我不知道客户端会产生什么样的I/O操作,究竟是fRead呢还是fWrite呢,所以想将套接字设置成fRead和fWrite,然后使用FD_ISSET来进行一个判断,如果是fRead的话,那服务端就调用recv来接受,如果是fWrite的话,那服务端就调用send来发送,可是因为我刚才所说的那种限制,导致这样操作起来比较麻烦,所以就想问问大家,该怎么实现能够好一些?

作者: JZY4077   发布时间: 2011-12-06

你这是怎么实现的?

Event Select模式怎么可能只绑定一种IO操作?
我不知道你这个FD_SET是不是自己定义的宏,但是你用WSAEventSelect(sListen , event , FD_ACCEPT | FD_CLOSE)这个函数的话,绑定多个操作绝对没问题。

作者: LinuxTiger   发布时间: 2011-12-06

我的哥啊,你有没有看清楚我的这篇帖子,我都说了我用的是select函数,不是WSAEventSelect函数,我真服你了,哥!

作者: JZY4077   发布时间: 2011-12-06

FD_SET(Socket, &fRead);
FD_SET(Socket, &fWrite);
这样会使fWrite覆盖掉fRead。
===================================
这是两个独立的fd,怎么可能覆盖呢?

作者: oo   发布时间: 2011-12-06