亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        VB中使用WinSock控件傳送文件

        字號:

        傳送文件對于網(wǎng)絡(luò)編程來說是基本的功能,比如遠(yuǎn)程控制軟件。這些程序提供的傳文件功能根本就不能用。傳文本還可以,傳二進制文件根本就不行。因此,作為一個基本的功能模塊,有必要單獨介紹一下。
            在VB中要傳送字符串:
            Dim strData As String
            strData = \"Test\"
            Winsock1.SendData strData
            但是如果你傳送的二進制文件,你還能用String變量來存放嗎?從理論上分析是不行的。文件雖然可以傳,但是接受的文件和發(fā)送的不一樣,原因可能是二進制文件里可以有任何\"字符\",但是不是所有的字符都可以放在String變量里。
            除了String類型的變量,VB中其他類型的變量都只有幾個字節(jié)長,難道一次只能發(fā)幾個字節(jié)嗎?那樣豈不是要累死機器了!其實,情況沒有那么悲觀,我們完全可以使用數(shù)組來解決這個問題,就是使用byte數(shù)組。把要傳送的文件都讀到數(shù)組里,然后發(fā)送出去。程序如下:
            FileName 為要傳送的文件名,WinS為發(fā)送文件的WinSock控件。這是一個發(fā)送端的程序。
            Public Sub SendFile(FileName As String, WinS As Winsock)
            Dim FreeF As Integer \’空閑的文件號
            Dim LenFile As Long \’文件的長度
            Dim bytData() As Byte \’存放數(shù)據(jù)的數(shù)組
            FreeF = FreeFile \’獲得空閑的文件號
            Open FileName For Binary As #FreeFile \’打開文件
            DoEvents
            LenFile = LOF(FreeFile) \’獲得文件長度
            ReDim bytData(1 To LenFile) \’根據(jù)文件長度重新定義數(shù)組大小
            Get #FreeFile, , bytData \’把文件讀入到數(shù)組里
            Close #FreeFile \’關(guān)閉文件
            WinS.SendData bytData \’發(fā)送數(shù)據(jù)
            End Sub
            接受端的程序如下:
            Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
            Dim bytData() As Byte
            Dim f
            f = FreeFile
            Open strFileName For Binary As #f
            ReDim bytData(1 To bytesTotal)
            Winsock1.GetData bytData
            Put #f, i, bytData
            i = i + bytesTotal \’保證每次寫都是在文件的末尾, i是個全局變量
            Close #f
            End Sub