當前位置:首頁 » 文件管理 » 大文件上傳socket

大文件上傳socket

發布時間: 2022-06-30 13:52:48

A. 遇到了在c#中socket如何實現大文件傳輸

接收端 private void Receive(Socket socket) { NetworkStream ns = new NetworkStream(socket); FileStream fs = new FileStream("c:\\file.txt", FileMode.OpenOrCreate); bool isRead = true; while (isRead) { int count = ns.Read(this._receiveBuf, 0, this._receiveBuf.Length); int datanum = 0; datanum = BitConverter.ToInt32(this._receiveBuf, 0); //從buffer中的前4個位元組讀出count if (datanum > 0) //確定每次要接受多少位元組數 { fs.Write(this._receiveBuf, 4, datanum); } else //如果接受位元組數為0 就推出 { isRead = false; } } this.txtFile.Text = "文件傳輸成功"; fs.Close(); } ---------------------點此發表你的看法>>【已有位網友發表了看法】

B. c語言socket文件傳輸問題

伺服器端(發送文件):首先打開文件【fopen】,用rb方式打開,既可以發送文本文件,也可以發送二進制文件,在無錯時初始化套接字socket,即初始化socket庫【WSAStartup】,分配socket【socket】,填充伺服器的地址,即填充sockaddr_in結構,然後進行綁定【bind】,設置套接字為監聽套接字【listen】,接收連接【accept】,至此伺服器阻塞,等待客戶端的連接。
客戶端(接收文件):首先打開文件【fopen】,用wb方式打開,在無錯時初始化套接字socket,即初始化socket庫【WSAStartup】,分配socket【socket】,填充客戶端的地址,即填充sockaddr_in結構,然後進行綁定【bind】,再填充伺服器的地址結構,然後調用【connect】進行連接,當連接成功後,第一階段的工作便結束了。
第二階段,發送文件。
伺服器端:使用循環while,結束條件是(!feof(fp)),fp是文件指針,feof檢測當前的文件讀取指針是否到達文件尾部,若到達了就返回真,否則返回假。然後在循環內部依次調用【fread】、【send】進行發送。這里有一個問題需要注意,調用fread的時候有兩個參數是要每次讀多少位元組和讀多少次,將第一個設置為1,將第二個設置為緩沖區的大小,用一個變數記錄實際讀到多少位元組,即【fread】的返回值,然後將其傳遞給【send】,就可以實現發送文件了,在發送完成後斷開連接【closesocket】,關閉文件【fclose】。
客戶端:使用while死循環,調用【recv】接收文件,【fwrite】寫入文件,這里也有個和上面類似的問題,就是要將recv的返回值傳遞給fwrite的第三個參數,即受到了多少位元組,就向文件中寫多少位元組。當recv返回值為0時(連接斷開時)退出循環,【closesocket】關閉套接字,調用【fclose】關閉文件。

C. java中,利用socket傳送大文件,中途停止問題

thread裡面接收數據應該是一個循環把?
那麼就給這個循環加一個跳出條件,比如說
private boolean stop=true;

在循環當中增加
if(stop=false){
break;

}
public void setStop(boolean stop)
{
this.stop=stop;

}
然後在需要停的時候調用setStop(false)就可以了
上面純手打,代碼拼寫什麼的可能有錯大概就是這個意思
順便說一下,thread.interrupt()是用來防止sleep或者wait方法卡死的,不會讓線程終結。你要讓線程結束還是要手動讓程序跳出循環

D. SOCKET 傳輸大文件應該怎麼做

昨天有去做測試,發現,並不是IO的問題造成整體的傳輸慢!還會代碼存在問題
我按照自己3的思路去完成代碼,也就是在Server端,我分了兩個線程,一個線程用於讀取文件,並將讀到的buf加入到一個動態鏈表尾部,另一個線程從此鏈表頭取數據,進行send操作,並且對send的返回值進行校驗,如果send的返回值和預期的發送位元組數不同,則採用斷點重傳的方式,繼續傳輸。在Client埠,也是用類似的服務端的機制,維護一個鏈表,進行讀取。
需要說明的是:我維護的這個鏈表是由深度的,並通過深度來調節兩個線程對鏈表的操作。

E. socket 大文件如何發送

大文件的發送可以把大文件按照二進制byte[]的方式讀取 設定一次發送的最大位元組數 然後根據最大發送位元組數分割成N個等分可能最後一個N的位元組數小於最大發送位元組數 解決方法是後面補填0就可以了因為發送時間可能會很長 因此用TCP 協議 保證傳輸的完整性 另外你可以自己編寫協議(每次發送之前做一次校驗 接收方校驗通過就通知發送方發送下一個包就可以了) 做實驗的話校驗部分就可有可無

F. 請教關於socket傳輸大文件的思路

這要考慮到文件I/O的效率和傳輸的速率的問題。
關於I/O效率:buffer的值對I/O效率有很大影響,一般而言buffer緩沖區大小設置為1024 2048 或者4096會得到最佳速率。
關於傳輸:這個和你的帶寬和網路狀況有關了,帶寬越大,網路狀況越好自然傳輸速度就快。
至於編碼,你多線程傳輸跟單線程傳輸效率基本上差不多。跟普通文件一樣的方式傳輸就行。

如有不同意見的朋友請指教!謝謝!

G. socket 傳送文件

此程序所佔篇幅太大,涉及伺服器和客戶端兩個程序。費時間了。
主要思想就那麼一點:基本socket編程,再加上文件操作不就行了。伺服器端接到客戶端發送的內容後,將緩沖區內的東西存到本地文件1.txt然後再將應答存儲在2.txt文件中,同時將2.txt的內容發送回客戶端。客戶端接到後,將收到的東西存到客戶端本地的2.txt中後,再向伺服器發送應答。這東西的本質不是發送文件,而是接受信息並存儲到本地的txt中,希望你理解

H. Socket通信能不能發送文件

當然可以咯,socket是套接字,運行在網路層(IP)以及傳輸層上,顯然是可以傳輸文件的咯,應用層使用的各種TCP,FTP,UDP服務均可封裝在套接字之上,所以顯然是可以的咯。

熱點內容
旗艦560配置的是什麼發動機 發布:2025-01-15 22:40:59 瀏覽:624
sql多表連接查詢 發布:2025-01-15 22:33:12 瀏覽:219
android網路休眠 發布:2025-01-15 22:32:12 瀏覽:348
怎麼不下魯大師查看電腦配置 發布:2025-01-15 22:30:23 瀏覽:309
php頁面亂碼 發布:2025-01-15 22:28:49 瀏覽:845
夢幻寶貝腳本 發布:2025-01-15 22:27:36 瀏覽:256
安卓怎麼調成2g網 發布:2025-01-15 22:21:40 瀏覽:284
android小車 發布:2025-01-15 22:21:15 瀏覽:923
微信怎麼沒有設置密碼 發布:2025-01-15 22:19:00 瀏覽:686
php判斷閏年 發布:2025-01-15 22:17:16 瀏覽:793