日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传送图片程序

發布時間:2025/3/15 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传送图片程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言: 以C#為程序設計基礎,傳輸大圖片,并現實。在過程中,采用套接字,單線程同步機制為例子。需要深化,可以采用異步或者多線程的機制,保障能夠順利執行。
? ? ??具體代碼可以到微云下載【鏈接:http://url.cn/YpiyxY (密碼:QJtp)】
正文:
? ? ? 客戶端
? ??網絡編程,離不開套接字,客戶端套接字編程需要了解和理解清楚5個部分
? ? ? 1、如何初始化套接字socket
? ? ? ? ? ??Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
? ? ? 2、如何有效的連接
? ? ? ? ?? s.Connect("192.168.1.100",2500);
? ? ? 3、發送過程
? ? ? ? ???既然哥在這里說是大文件,肯定回使用s.SendFile來處理發送過程,這也是解決大文件的好方法。
【聰明的同學】哦,原來還有這樣的方法,仔細閱讀MSDN才行。
【可愛的老師】當你發送文件給對方的時候,對方將會打開套接字等待你,那他怎么知道你究竟有多大呢?當不知道大小的情況下接收,會遇到很大的問題,很不方便我們處理。同學們說說,會有怎樣的問題啊?
【聰明的同學】1、不知道現在的空間能否存儲。2、套接字也不知道何時終止……老師怎么才能有效解決呢?
【可愛的老師】同學們,我在開始發送之前,把文件的大小,先告之對方,這樣就可以啦!
【聰明的同學】那采用多少前綴字節呢?如果沒有統一,到時候對方也不知道哪些是前綴,哪些是文件流?
【可愛的老師】在windows 中文件的大小是用long類型來描述的,也就是大致占有8個字節,所以WINDOWS的單獨文件大小不會超過2的64次方。于是,在發送大文件之前,統一前8個字節存放文件大小,插入在文件流的最前面,然后采用數據字節流,傳送給對方,對方首先也讀取前8個字節,了解大小后,開始讀取文件,并分析該盤符時候有空間給它存放。
【聰明的同學】老師你既然可以在前面加preStream,我是不是把我的文件名稱,大小,擴展名一起存放在lastStream一起發送。
【可愛的老師】真聰明!就是這樣處理。
? ? ? ? ??FileInfo fi = new FileInfo(filepath); ?filepath 一般指的是URL 例如:C:\A.JPG
? ? ? ? ??byte[] len = BitConverter.GetBytes(fi.Length);
s.SendFile(filepath,len,null,TransmitFileOptions.UseDefaultWorkerThread); s.Shutdown(SocketShutdown.Both); ? ? ??4、接收過程
? ? ? ? ???s.Receive來接收,在這里,哥會在詳細講解。
? ? ? 5、關閉套接字
??? ? ? ???s.close()
服務器
?服務器的套接字,就有所不同,它不是鏈接對方,而是等待,所以它需要綁定自己能夠提供服務的IP地址和相應的端口號,當等待的時候,會出現中斷。所以要考慮多線程。
現在主要是處理接收大文件的方法。先取出文件的大小。
byte[] buffer = new byte[8];? ? ? ? ? ? ? ?? s.Receive(buffer,8,0); long length = BitConverter.ToInt32(buffer, 0); ? 然后申請一個
??MemoryStream MS; 內存流,如果計算器還沒有計算到總數那么多,接著循環執行。?
? ? ? ? ? ? ? ?byte[] buf=new byte[8192];? while (count <length) { readcount =s.Receive(buf, buf.Length, 0);? MS.Write(buf, 0, readcount); count += readcount;
? ? ? ? ? ? ??}? 這樣,將把所要的流讀入了MS中,如果是圖片,可以直接使用Image.FromStream(MS)提供給pictureBox顯示,當然也可以使用。
MS.sava去保存你要的格式。

好,基本上講到這里。

轉載于:https://www.cnblogs.com/seemenlee/p/5389950.html

總結

以上是生活随笔為你收集整理的传送图片程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。