vb socket通訊 大檔案埠上傳(1)

2021-09-30 03:55:08 字數 1982 閱讀 8008

今天我們來分享一下通過winsock控制項,埠傳輸檔案,以及如何確定傳輸完成標誌。

檔案傳輸完成標誌的確定是通過三次握手來確定的,首先,客戶端現將檔案的長度傳送給伺服器端,當伺服器端受到檔案長度之後,進入接受檔案狀態,同時返回乙個「send」訊號給客戶端。當客戶端受到「send」後,再將檔案傳送伺服器。伺服器通過接收資料的大小來計算檔案是否傳送完畢。下面讓我們來看一下**吧。

客戶端:

private sub command1_click()

filename = "d:/nan/0046929.zip"『這個是要傳的檔案路徑

dim freef as integer '/'空閒的檔案號

dim lenfile as long '/'檔案的長度

'dim bytdata() as byte '/'存放資料的陣列

freef = freefile() '/'獲得空閒的檔案號

open filename for binary as #freef '/'開啟檔案

'doevents

lenfile = lof(freef)

dim lenstr as string

lenstr = "str" & lenfile

sckclient.senddata lenstr

close #freef

end sub

private sub cmdsend_click()

const imax = 8192

filename = "d:/nan/0046929.zip"

dim freef as integer '/'空閒的檔案號

dim lenfile as long '/'檔案的長度

dim bytdata() as byte '/'存放資料的陣列

freef = freefile() '/'獲得空閒的檔案號

open filename for binary as #freef '/'開啟檔案

doevents

lenfile = lof(freef) '/'獲得檔案長度

if lenfile <= imax then '/'如果要傳送的檔案小於資料塊大小,直接傳送

redim bytdata(1 to lenfile) '/'根據檔案長度重新定義陣列大小

get #freef, , bytdata '/'把檔案讀入到陣列裡

close #freef '/'關閉檔案

sckclient.senddata bytdata '/'傳送資料

exit sub

end if

do until (ipos >= (lenfile - imax)) '/'傳送整塊資料的迴圈

redim bytdata(1 to imax)

get #freef, ipos + 1, bytdata

sckclient.senddata bytdata

ipos = ipos + imax '/'移動ipos,使它指向下來要讀的資料

loop

'/'這裡要注意的是,必須檢查檔案有沒有剩下的資料,如果檔案大小正好等於資料塊大小的

'/' 整數倍,那麼就沒有剩下的資料了

redim bytdata(1 to lenfile - ipos) '/'傳送剩下的不夠乙個資料塊的資料

get #freef, ipos + 1, bytdata

sckclient.senddata bytdata

close #freef

end sub

private sub sckclient_dataarrival(byval bytestotal as long)

dim ss as string

sckclient.getdata ss

if ss = "send" then

text1.text = text1.text & ss

call cmdsend_click

end if

end sub

vb socket通訊 大檔案埠上傳(2)

今天我們來分享一下通過winsock控制項,埠傳輸檔案,以及如何確定傳輸完成標誌。檔案傳輸完成標誌的確定是通過三次握手來確定的,首先,客戶端現將檔案的長度傳送給服 務器端,當伺服器端受到檔案長度之後,進入接受檔案狀態,同時返回乙個 信 號給客戶端。當客戶端受到 後,再將檔案傳送伺服器。伺服器通過接收...

連線數 埠範圍 最大檔案數

1.有些linux系統最大tcp鏈結數比較小,無法支援同時併發6w量的tcp鏈結?原因 最大tcp連線數和系統允許開啟的最大檔案數,使用者允許開啟的最大檔案數,tcp網路連線可用的埠範圍有關,取上述的最小值 一般的設定規則為 系統最大檔案數 可用埠 使用者最大檔案數 修改可用埠數 檢視埠範圍 sys...

上傳大檔案 關於大檔案上傳

js計算檔案md5使用spark md5.js,據說這個庫使用的是世界上最快的md5演算法。js對檔案切片並使用ajax上傳切片 let size file.size 獲取檔案大小 const shardsize 1024 1024 塊大小1mb let shardcount math.ceil s...