2013-11-28 23 views
1

首先,我搜索了很多,這是我的最後一招。如何使用setsockopt將ToS添加到流中?

我用Linphone中SIP開源爲Windows 7的,我嘗試使用不同的服務類型發送音頻/視頻流從0

代碼的相關部分:

retval = setsockopt(session->rtp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos)); 
     if (retval==-1) 
      ortp_error("Fail to set DSCP value on rtp socket: %s",getSocketError()); 
     if (session->rtcp.socket != (ortp_socket_t)-1){ 
      if (setsockopt(session->rtcp.socket, proto, value_type, (SOCKET_OPTION_VALUE)&tos, sizeof(tos))==-1){ 
       ortp_error("Fail to set DSCP value on rtcp socket: %s",getSocketError()); 
      } 
     } 

我獲得成功,ae retval不是-1。不過從Wireshark的我仍然看到甲苯磺酰= 0

Someone tells its windows bug, someone - by SPEC (a.e. feature).

是否有人知道解決方法或者我需要通過命令行手動創建通過「輸入gpedit.msc」組策略?

+0

WSAGetLastError值告訴你什麼? – SilverCode

+0

看到我的編輯,我沒有得到任何錯誤 –

+0

對於它的價值,TOS字段基本上沒有使用。很少有路由器實際上對此採取任何行動。也許是 – duskwuff

回答

1

如果您想要Microsoft提供的「最新最好」的QOS故事,您需要查看qWave。 qWave的問題在於,這個API只有一半的故事。 qWave允許您爲Windows本身「標記」tcp流類型(視頻,語音等),然後網絡管理員可以創建關於如何處理它的文件polices。 qWave默認不安裝在服務器操作系統上。 qWave無法做的是在網絡數據包中設置特定的DSCP位,這些位由數字生活網絡聯盟(DLNA)和WiFi聯盟無線多媒體(WMM)規範定義。

如果您需要設置特定的DSCP位,唯一的選擇是使用舊的和不贊成的Traffic Control API。

相關問題