0
我有一臺服務器可以發送文件給客戶端請求它們。對於尺寸小於2演出的文件來說,它非常棒。 但是,當文件超過2演出,我的服務器在這裏會給我一個溢出錯誤在昏暗的緩衝區。我查找它並發現緩衝區大小可能是(upload.SendBufferSize -1)。但是,更改這給了我一個不同的錯誤: 上傳。發送:一個非阻塞套接字操作不能立即完成。VB的Socket.Send返回「一個非阻塞套接字操作無法立即完成。」
我搜索它從互聯網上,和一個建議是嘗試,如果發生錯誤添加Upload.Blocking =真,但後來我得到它說爭辯是無效的錯誤。
對我的問題的任何建議?
Private Sub UploaderAccept(ar As IAsyncResult)
Dim File As IO.FileInfo = ar.AsyncState
Dim Upload As Socket = UploadServer.EndAccept(ar)
'--- Determine size of buffer
Dim fs As New IO.FileStream(File.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim buffer(Upload.SendBufferSize - 1) As Byte
Dim Sent As Long = 0
Dim t As Long = 0
'--- Actual sending
Do Until Sent >= File.Length
t = fs.Read(buffer, 0, buffer.Length)
Upload.Send(buffer, 0, t, SocketFlags.None)
Sent += t
Loop
'--- File transfer done
fs.Close()
Upload.BeginDisconnect(False, New AsyncCallback(AddressOf OnDisconnect), upload)
Upload.Close()
End Sub