人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

Windows Media server SDK (3)

Windows Media server SDK (3)

更新時間:2022-06-06 文章作者:未知 信息來源:網絡 閱讀次數:

5. 媒體服務傳輸控件
1) 類型
 - 多播
一對多的文件傳輸, 接受者"監聽"同一個多播IP地址和端口來接收文件.
 - 單播
一對一的文件傳輸, 接受者"監聽"多個IP地址之一和同一個斷開來接收文件.

2) 完全可靠性服務
 文件傳輸組件實現了一個多播的完全可靠性服務保證每一個數據包被收到, 保持不被破壞和完整. 如果接受者發現數據包丟失和損壞, 可以發送一個NAK到發送者請求數據包重發.

 在完全可靠性服務模式下, 文件傳輸服務執行一個流控制; 這是對于速度控制的額外支持. 如果發送者傳輸數據包過快, 接受者發送一個扼殺NAK提示傳輸速度必須下降. 接受者也在忙和無法接收更多數據包或者一段時間沒有收到數據包的時候發送空閑 NAK.

 文件傳輸控件使用完全可靠性服務模式作為缺省模式. 如果發送者不實用該模式, 控件依舊可以接收回傳只是無法請求重傳數據包. 完全可靠性服務可以通過 FullyReliableService 屬性關閉.

 雙向網要求完全可靠服務.

 完全可靠服務模式要求使用錯誤轉發機制(FEC).

 【相關控制消息】
- NAK
是一個發送自接收端到發送端的數據, 提示數據包被放棄. 是一個請求重發數據包的消息. 使用它是一個有效地方式添加可信度, 因為接受者只需要接收那些沒有被接收的數據包.
 - Throttle NAK
來自接收端的請求, 提示發送端降低帶寬. 被完全可靠服務使用.
 - Idle NAK
來自接收端的請求, 提示發送端在數據包沒有收到, 且傳輸不完整. 發送端收到的時候等待其他接收端NKAs來重發請求的數據包.

3) 接收文件
 方式:
 1. 在發送者發送文件之前, 啟動一個接收操作確保所有的文件被傳輸. 如果接收操作在發送到已經開始發送一組文件后開始, 接收端接收當前文件和其余文件. 如果接收動作在發送途中開始, 接收端接收該文件.
 2. 使用 FtsStartFileTransferReceive 方法接收文件. 稱之為監聽. 針對多播傳輸, 使用一個多播地址. 針對多播傳輸使用主機的本地地址之一, 如果沒有指定本地地址, 第一個主機本地地址缺省使用. 接收端可以取消一個文件接收(FtsCancelFileTransferReceive).
狀態和進度可以通過事件和屬性在文件傳輸期間獲得.


4) 狀態提示
 FtsOnTransferStarted
 FtsOnTransferCompleted
 FtsOnFileTransferStarted
 FtsOnFileTransferCompleted
 FtsOnStatusChanged

5) 進度提示
 要獲得文件傳輸信息, 使用 FtsRegisterStatusCallback 注冊需要的傳輸信息. 典型的請求包括 - 每100KB提示一次, 獲則每10%提示一次.

 提示也可以請求關于接收的數據包個數, 虛假數據包個數( 從同一個IP地址和端口獲得, 但是不是需要的文件部分), 重復數據包, 丟失數據包等. 進度提示由 FtsOnTransferProgress 事件處理. 讀取正確的屬性, 然后在事件處理子程序中采取正確的處理. 通過調用 FtsRevokeStatusCallback 方法可以宣告一個提示無效.

 進度通告只在 FtsOnTransferProgress 時間上觸發. 傳輸進度屬性值 (諸如: NumPacketsDropped)總是有效地.

6) 如何使用
 <OBJECT ID="NSFile" WIDTH="100" HEIGHT="51" CLASSID="CLSID:26F24A93-1DA2-11D0-A334-00AA004A5FC5" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsftsinf.cab#Version=3,0,0,2700"></OBJECT>

<!-- 一個接收文件的例子, 附帶進度顯示 -->
<SCRIPT LANGUAGE="VBScript">
<!--
Sub BtnReceiveFile_OnClick
MyForm.Noise.Value = 0
MyForm.Redundancy.Value = 0
call nsfile1.FtsRegisterStatusCallback(0, 0, 4096, 4096, 0, 0, 0, 0, 0, 0, 0)
On Error Resume Next
call nsfile1.FtsStartFileTransferReceive("239.230.50.50", 5050, "", "%TEMP%\", 0, 1025)
IfErr.Number Then MsgBox "Start Error = " & ReturnError(Err.Number)
End Sub

Sub BtnCancelFile_OnClick
call nsfile1.FtsCancelFileTransferReceive
MsgBox "Transfer Cancelled. Error = " & ReturnError(nsfile1.Result)
End Sub

Sub nsfile1_FtsOnTransferProgress
MyForm.TotalBytes.Value = nsfile1.NumTotalBytesTransferred
MyForm.DataBytes.Value = nsfile1.NumTotalDataBytesTransferred
MyForm.Packets.Value = nsfile1.NumPacketsTransferred
MyForm.Bogus.Value = nsfile1.NumBogusPacketsReceived
End Sub

Sub nsfile1_FtsOnTransferCompleted
MsgBox "Transfer Completed. Error = " & ReturnError(nsfile1.Result)
TotalBytes = nsfile1.NumTotalBytesTransferred
if TotalBytes > 0 then
DataBytes = nsfile1.NumTotalDataBytesTransferred
MyForm.Redundancy.Value = Int(((TotalBytes - DataBytes)/TotalBytes)*100)
Packets = nsfile1.NumPacketsTransferred
Bogus = nsfile1.NumBogusPacketsReceived
MyForm.Noise.Value = Int(Bogus/Packets)
MyForm.TotalBytes.Value = nsfile1.NumTotalBytesTransferred
MyForm.DataBytes.Value = nsfile1.NumTotalDataBytesTransferred
MyForm.Packets.Value = nsfile1.NumPacketsTransferred
MyForm.Bogus.Value = nsfile1.NumBogusPacketsReceived
end if
End Sub

Sub BtnAbout_OnClick
call nsfile1.AboutBox()
End Sub

Function ReturnError(ByVal ErrNum)
Select Case ErrNum
 Case 0
ErrString = "No Error"
 Case 1
ErrString = "Already Requested"
 Case -2147467260
ErrString = "Cancelled"
 Case -2147467259
ErrString = "Failed"
 Case -2147287038
ErrString = "File Not Found"
 Case -2147024882
ErrString = "Out Of Memory"
 Case -2147024809
ErrString = "Invalid Parameter"
 Case -2147023436
ErrString = "Timed Out"
 Case Else
ErrString = "Unknown Error " & CStr(Hex(ErrNum))
End Select
ReturnError = ErrString
End Function

-->
</SCRIPT>

<!-- 一個完整的接收文件例子 -->
<HTML>
<HEAD><TITLE>Total FTS Demo</TITLE>
<link rel="stylesheet" type="text/css" href="../msdn_ie4.css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">


<H2>Total File Transfer Service Demo</H2>


<OBJECT ID="nsfile1"
CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsftsinf.cab#Version=3,0,0,2700"
 CLASSID="CLSID:26F24A93-1DA2-11D0-A334-00AA004A5FC5" ALIGN="RIGHT" HEIGHT="10" WIDTH="10">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>


<FORM NAME="MyForm">
<TABLE>
<TR>
<TD><B>Source IP:</B></TD><TD><INPUT TYPE="TEXT" NAME="IPAddr" VALUE="239.230.50.50"></TD>
<TD><B>Source port:</B></TD><TD><INPUT TYPE="TEXT" NAME="IPPort" VALUE="5050" SIZE="6"></TD>
<TD><B>Filter:</B></TD><TD><INPUT TYPE="TEXT" NAME="Filter"></TD>
</tr>
</TABLE>
<HR SIZE=1>

<TABLE>
<TR>
<TD><B>Path:</B></TD><TD><INPUT TYPE="TEXT" NAME="FilePath" VALUE="%TEMP%\"></TD>
<TD><B>Attributes:</B></TD><TD><INPUT TYPE="TEXT" NAME="Attributes" VALUE="0"></TD>
<TD><B>Flags:</B></TD><TD><INPUT TYPE="TEXT" NAME="Flags" VALUE="1025"></TD>
</TR>
</TABLE>
<HR SIZE=1>


<TABLE>
<TR>
<TD><INPUT TYPE="BUTTON" NAME="BtnReceiveFile" VALUE="Start receive"></TD>
<TD><INPUT TYPE="BUTTON" NAME="BtnCancelFile" VALUE="Cancel"></TD>
<TD><INPUT TYPE="BUTTON" VALUE="About FTS" NAME="BtnAbout"></TD>
<TD WIDTH="25"></TD>
<TD WIDTH="50"><INPUT TYPE="TEXT" NAME="Routing"></TD>
<TD WIDTH="25"></TD>
<TD ALIGN="RIGHT" WIDTH="75"><B>Start time:</B></TD>
<TD WIDTH="150"><INPUT TYPE="TEXT" NAME="StartTime"></TD>
</TR>
</TABLE>
<HR SIZE=1>

<TABLE>
<TR>
<TD><B>Files:</B></TD><TD><INPUT TYPE="TEXT" NAME="NumFiles" SIZE="5"></TD>
<TD><B>Percent file:</B></TD><TD><INPUT TYPE="TEXT" NAME="PerFileData" SIZE="30"></TD>
<TD><B>Time taken:</B></TD><TD><INPUT TYPE="TEXT" NAME="MyTime"></TD>
</TR>
</TABLE>
<HR SIZE=1>

<TABLE>
<TR>
<TD><B>Current file:</B></TD><TD><INPUT TYPE="TEXT" NAME="CurrFile" SIZE="30"></TD>
<TD><B>Size:</B></TD><TD><INPUT TYPE="TEXT" NAME="CurrSize" SIZE="16"></TD>
<TD><B>Attributes:</B></TD><TD><INPUT TYPE="TEXT" NAME="CurrAttr" SIZE="6"></TD>
</TR>
</TABLE>
<HR SIZE=1>

<TABLE>
<TR>
<TD><B>Total bytes:</B></TD><TD><INPUT TYPE="TEXT" NAME="TotalBytes"></TD>
<TD><B>Data bytes:</B></TD><TD><INPUT TYPE="TEXT" NAME="DataBytes"></TD>
</TR>
<TR>
<TD><B>Packets:</B></TD><TD><INPUT TYPE="TEXT" NAME="Packets" SIZE="8"></TD>
<TD><B>Bogus:</B></TD><TD><INPUT TYPE="TEXT" NAME="Bogus" SIZE="8"></TD>
<TD><B>Drop:</B></TD><TD><INPUT TYPE="TEXT" NAME="PackDrop" SIZE="8"></TD>
</tr>
<TR>
<TD><B>Corr:</B></TD><TD><INPUT TYPE="TEXT" NAME="PackCorr" SIZE="8"></TD>
<TD><B>Dupes:</B></TD><TD><INPUT TYPE="TEXT" NAME="PackDup" SIZE="8"></TD>
</TR>
</TABLE>
<HR SIZE=1>

<TABLE>
<TR>
<TD><B>Source path:</B></TD><TD><INPUT TYPE="TEXT" NAME="SrcPath" SIZE="35"></TD>
</tr>
<TR>
<TD><B>Destination path:</B></TD><TD><INPUT TYPE="TEXT" NAME="DestPath" SIZE="35"></TD>
</TR>

<TR>
<TD><B>Endpoint address:</B></TD><TD><INPUT TYPE="TEXT" NAME="EndAddr" SIZE="16"></TD>
<TD><B>Endpoint port:</B></TD><TD><INPUT TYPE="TEXT" NAME="EndPort" SIZE="8"></TD>
</TR>

<TR>
<TD><B>Source addresss:</B></TD><TD><INPUT TYPE="TEXT" NAME="SrcAddr" SIZE="16"></TD>
<TD><B>Source port:</B></TD><TD><INPUT TYPE="TEXT" NAME="SrcPort" SIZE="8"></TD>
</TR>

<TR>
<TD><B>Local address:</B></TD><TD><INPUT TYPE="TEXT" NAME="LocAddr" SIZE="16"></TD>
<TD><B>Local port:</B></TD><TD><INPUT TYPE="TEXT" NAME="LocPort" SIZE="8"></TD>
</tr>
<TR>
<TD><B>Local port used:</B></TD><TD><INPUT TYPE="TEXT" NAME="LastPort" SIZE="16"></TD>
</TR>
</TABLE>
<HR SIZE=1>

</FORM>



<SCRIPT LANGUAGE="VBScript">
<!--
Sub BtnReceiveFile_OnClick
 On Error Resume Next
 '--- Initialize form values.
 MyForm.MyTime.Value = ""
 MyForm.StartTime.Value = ""
 MyForm.NumFiles.Value = ""
 MyForm.PerFileData.Value = ""
 MyForm.TotalBytes.Value = ""
 MyForm.DataBytes.Value = ""
 MyForm.CurrFile.Value = ""
 MyForm.CurrAttr.Value = ""
 MyForm.CurrSize.Value = ""
 MyForm.Packets.Value = ""
 MyForm.Bogus.Value = ""
 MyForm.PackDrop.Value = ""
 MyForm.PackCorr.Value = ""
 MyForm.PackDup.Value = ""
 MyForm.SrcPath.Value = ""
 MyForm.DestPath.Value = ""
 MyForm.EndAddr.Value = ""
 MyForm.EndPort.Value = ""
 MyForm.SrcAddr.Value = ""
 MyForm.SrcPort.Value = ""
 MyForm.LocAddr.Value = ""
 MyForm.LocPort.Value = ""
 MyForm.LastPort.Value = ""
 '--- Determine routing.
 If MyForm.IPAddr.Value = "" Then
MyForm.Routing.Value = " Listen for Unicast"
MyIPAddr = ""
nsfile1.Type = 2
 Else
MyIPAddr = MyForm.IPAddr.Value
MyForm.Routing.Value = "Listen for Multicast"
 End If
'--- Set up callbacks.
 call nsfile1.FtsRegisterStatusCallback(4096, 5, 8192, 8192, 1, 1, 1, 1, 1, 4+8+16+32, 0)
'--- Start transfer.
 call nsfile1.FtsStartFileTransferReceive(MyIPAddr, MyForm.IPPort.Value, MyForm.Filter.Value,MyForm.FilePath.Value, MyForm.Attributes.Value, MyForm.Flags.Value)
 If Err.Number Then MsgBox "Start Error = " & ReturnError(Err.Number)
End Sub

Sub BtnCancelFile_OnClick
 On Error Resume Next
 call nsfile1.FtsCancelFileTransferReceive
 MsgBox "Transfer Cancelled. Error = " & ReturnError(nsfile1.Result)
End Sub

Sub nsfile1_FtsOnTransferStarted
 On Error Resume Next
 MyForm.StartTime.Value = Time()
 MyForm.SrcPath.Value = nsfile1.SourceFilePath
 MyForm.DestPath.Value = nsfile1.DestinationFilePath
 MyForm.EndAddr.Value = nsfile1.EndpointAddress
 MyForm.EndPort.Value = nsfile1.EndpointPort
 MyForm.SrcAddr.Value = nsfile1.SourceAddress
 MyForm.SrcPort.Value = nsfile1.SourcePort
 MyForm.LocAddr.Value = nsfile1.LocalAddress
 MyForm.LocPort.Value = nsfile1.LocalPort
 MyForm.LastPort.Value = nsfile1.LocalPortUsed
End Sub

Sub nsfile1_FtsOnFileTransferStarted
 On Error Resume Next
 MyForm.CurrFile.Value = nsfile1.CurrentFilePath
 MyForm.CurrAttr.Value = nsfile1.CurrentFileAttributes
 MyForm.CurrSize.Value = nsfile1.CurrentFileSize
End Sub

Sub nsfile1_FtsOnFileTransferCompleted
 On Error Resume Next
 MyForm.NumFiles.Value = nsfile1.NumFilesTransferred
End Sub

Sub nsfile1_FtsOnTransferProgress
 On Error Resume Next
 MyForm.NumFiles.Value = nsfile1.NumFilesTransferred
 ProgBar = Int((nsfile1.PercentFileDataBytesTransferred)/5)
 If ProgBar < 20 Then
 MyForm.PerFileData.Value = String(ProgBar, "?)
 Else
 MyForm.PerFileData.Value = "File Transferred!"
 End If
 MyForm.TotalBytes.Value = nsfile1.NumTotalBytesTransferred
 MyForm.DataBytes.Value = nsfile1.NumTotalDataBytesTransferred
 MyForm.Packets.Value = nsfile1.NumPacketsTransferred
 MyForm.Bogus.Value = nsfile1.NumBogusPacketsReceived
 MyForm.PackDrop.Value = nsfile1.NumPacketsDropped
 MyForm.PackCorr.Value = nsfile1.NumPacketsCorrected
 MyForm.PackDup.Value = nsfile1.NumDuplicatePacketsReceived
End Sub

Sub nsfile1_FtsOnTransferCompleted
 On Error Resume Next
 TTime = TimeValue(Now) - TimeValue(MyForm.StartTime.Value)
 MyForm.MyTime.Value = "Total = " & Hour(TTime) & " h " & Minute(TTime) & " m " & Second(TTime) & " s"
 MsgBox "Transfer Completed. Error = " & ReturnError(nsfile1.Result)
'--- Bytes
 MyForm.NumFiles.Value = nsfile1.NumFilesTransferred
 MyForm.PerFileData.Value = "File Transferred!"
 MyForm.TotalBytes.Value = nsfile1.NumTotalBytesTransferred
 MyForm.DataBytes.Value = nsfile1.NumTotalDataBytesTransferred
 MyForm.CurrFile.Value = nsfile1.CurrentFilePath
 MyForm.CurrAttr.Value = nsfile1.CurrentFileAttributes
 MyForm.CurrSize.Value = nsfile1.CurrentFileSize
'--- Packets
 MyForm.Packets.Value = nsfile1.NumPacketsTransferred
 MyForm.Bogus.Value = nsfile1.NumBogusPacketsReceived
 MyForm.PackDrop.Value = nsfile1.NumPacketsDropped
 MyForm.PackCorr.Value = nsfile1.NumPacketsCorrected
 MyForm.PackDup.Value = nsfile1.NumDuplicatePacketsReceived
End Sub

Sub BtnAbout_OnClick
 call nsfile1.AboutBox()
End Sub

Function ReturnError(ByVal ErrNum)
 Select Case ErrNum
 Case 0
ErrString = "No Error"
 Case 1
ErrString = "Already Requested"
 Case -2147467260
ErrString = "Cancelled"
 Case -2147467259
ErrString = "Failed"
 Case -2147287038
ErrString = "File Not Found"
 Case -2147024882
ErrString = "Out Of Memory"
 Case -2147024809
ErrString = "Invalid Parameter"
 Case -2147023436
ErrString = "Timed Out"
 Case Else
ErrString = "Unknown Error " & CStr(Hex(ErrNum))
 End Select
 ReturnError = ErrString
End Function
-->
</SCRIPT>

</BODY>
</HTML>

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 彰化县| 皋兰县| 株洲县| 清水河县| 淳安县| 育儿| 新昌县| 定襄县| 西平县| 全州县| 黔东| 卢龙县| 云浮市| 忻城县| 双辽市| 城口县| 新泰市| 鲁甸县| 茶陵县| 册亨县| 漯河市| 疏附县| 新丰县| 芦山县| 农安县| 五河县| 兴仁县| 梁河县| 水城县| 扎鲁特旗| 鹿邑县| 双流县| 玉龙| 梁河县| 汾阳市| 上犹县| 定南县| 灌南县| 南皮县| 卫辉市| 平江县|