H
hongsen
Unregistered / Unconfirmed
GUEST, unregistred user!
利用Winsock编程进行网络数据传输,如果在某一时刻需要发送紧急数据,如何
能够使紧急数据比普通的数据更快的到达目的地,哪怕是在网络拥挤的情况下,
我本来采用的是OOB,也就是所谓的“带外数据”,SO_OOBINLINE设为FALSE,
即不使用带外数据带内传送的方式,按照VC关于“带外数据”,这种方法可以
让OOB数据"jumpsthe queue",这意思是不是能够使紧急数据(OOB)比普通的数
据更快的到达目的地?可当我用send函数带MSG_OOB标志发送数据,采用异步方
式,按帮助所说,接收方应有FD_OOB事件响应,然后用recv函数带MSG_OOB标
志接收。可结果确是接收方响应的是FD_READ事件,而recv函数也不能MSG_OOB标志接收,否则会发生阻塞,这是怎么回事?后来我不采用异步方式,直接在发
送方用send函数带MSG_OOB标志发送数据,在接收方用select函数判断有OOB数
据,结果判断结果没有OOB数据(但有数据)。如果使用recv函数带MSG_OOB标
志接收数据,则会阻塞,如果使用recv函数不带MSG_OOB标志(标志为0)接收数
据,则可正常接收。难道winsock中OOB已经不起作用了?那为何VC中还有关于它
的相应的时间,函数标志(我还使用过CAsyncSocket中的OnOutOfBangData也
无响应,不管发送方的send用什么标志,只响应OnReceive)。如果OOB不能
用,有什么好办法可以解决我最开始提的问题?
能够使紧急数据比普通的数据更快的到达目的地,哪怕是在网络拥挤的情况下,
我本来采用的是OOB,也就是所谓的“带外数据”,SO_OOBINLINE设为FALSE,
即不使用带外数据带内传送的方式,按照VC关于“带外数据”,这种方法可以
让OOB数据"jumpsthe queue",这意思是不是能够使紧急数据(OOB)比普通的数
据更快的到达目的地?可当我用send函数带MSG_OOB标志发送数据,采用异步方
式,按帮助所说,接收方应有FD_OOB事件响应,然后用recv函数带MSG_OOB标
志接收。可结果确是接收方响应的是FD_READ事件,而recv函数也不能MSG_OOB标志接收,否则会发生阻塞,这是怎么回事?后来我不采用异步方式,直接在发
送方用send函数带MSG_OOB标志发送数据,在接收方用select函数判断有OOB数
据,结果判断结果没有OOB数据(但有数据)。如果使用recv函数带MSG_OOB标
志接收数据,则会阻塞,如果使用recv函数不带MSG_OOB标志(标志为0)接收数
据,则可正常接收。难道winsock中OOB已经不起作用了?那为何VC中还有关于它
的相应的时间,函数标志(我还使用过CAsyncSocket中的OnOutOfBangData也
无响应,不管发送方的send用什么标志,只响应OnReceive)。如果OOB不能
用,有什么好办法可以解决我最开始提的问题?