今天我們來分享一下通過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...