Socket求救(100分)

  • 主题发起人 主题发起人 hongsen
  • 开始时间 开始时间
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不能
用,有什么好办法可以解决我最开始提的问题?
 
老兄,紧急数据不也是你发的吗。有紧急数据时让一般优先级的数据
先pause一下不就完了吗。如果网是连着的,传输就不会中断。能不能先到
就看你发送的先后顺序了。(BTW.如果是按包发送的,有紧急数据时可以
在不够一个包的情况下发出。在dephi中提供的winsock中,没有关于这个问题
的解答。)
 
Did you set the option of the socket in receiver side?
That is, SO_OOBINLINE to false?
 
HongSen:
你是谁(可是92751班的哪一个)请回答
!!!!!!!!!!!!!!!(LiuJiGuang)
 
老兄,这可是TCP/IP 的难点,现在IP电话语音延迟问题就是这个原因造成,是否能够解决还要看IP技术的发展了。
 
多人接受答案了。
 
我也是相同的问题.
 
后退
顶部