<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C# 利用Socket.SendFile發送圖片(源碼)

      引言

      
      

      自 .NET Framework 2.0 版本開始新增了一個SendFile方法,此方法可以方便的發送指定路徑的文件,今天給大家演示一個利用Socket.SendFile方法發送圖片的例子,希望能給剛剛接觸Socket編程的朋友一些幫助,效果圖: 
       

       

      SendFile詳細參數

      
      
      
      

      Socket.SendFile 方法 (String, Byte[], Byte[], TransmitFileOptions)
      使用指定的 TransmitFileOptions 值,將文件 fileName 和數據緩沖區發送到連接的 Socket 對象。
      注意是連接的Socket對象,所以只適用于TCP協議的Socket連接。

      參數
      fileName

      一個String,它包含要發送的文件的路徑和名稱。此參數可以為 空引用(在 Visual Basic 中為 Nothing)。

      preBuffer

      一個 Byte 數組,包含發送文件前要發送的數據。此參數可以為 空引用(在 Visual Basic 中為 Nothing)。

      postBuffer

      一個 Byte 數組,包含發送文件后要發送的數據。此參數可以為 空引用(在 Visual Basic 中為 Nothing)。

      flags

      一個或多個 TransmitFileOptions 值。

       

      詳細請參考Socket.SendFile

       

      
      Send和Receive
       
      
      
      
      
      
      
       
       SendFile
              /// <summary>
              /// 發送指定文件
              /// </summary>
              /// <param name="filename">文件路徑</param>
              public void SendFile(string filename)
              {
                  FileInfo fi = new FileInfo(filename);
      
                  byte[] len = BitConverter.GetBytes(fi.Length);
      
                  //首先把文件長度發送過去
                  _client.BeginSendFile(filename,
                      len,
                      null,
                      TransmitFileOptions.UseDefaultWorkerThread,
                      new AsyncCallback(SendFileCallback),
                      null);
              }
      
      
              private void SendFileCallback(IAsyncResult iar)
              {
                  _client.EndSendFile(iar);
              }
      

        ReceiveFile

              public void BeginReceive()
              {
                  byte[] buffer = new byte[8];
                  //由于long占8位字節,所以先獲取前8位字節數據
                  IAsyncResult iar = _client.BeginReceive(
                      buffer,
                      0,
                      buffer.Length,
                      SocketFlags.None,
                      null,
                      null);
                  int len = _client.EndReceive(iar);
                  int offset = 0;
                  int length = BitConverter.ToInt32(buffer, offset);  //先獲取文件長度
                  ReceiveFile(length);
      
                  BeginReceive();  //繼續接收
              }
      
              public void ReceiveFile(long filelen)
              {
                  MemoryStream ms = new MemoryStream();
                  int bytesRead = 0;
                  long count = 0;
                  byte[] buffer = new byte[8192];
      
                  while (count != filelen)
                  {
                      bytesRead = _client.Receive(buffer, buffer.Length, 0);
                      ms.Write(buffer, 0, bytesRead);
                      count += bytesRead;
                  }
      
                  ReceivedBitmap(new Bitmap(ms));
              }
      

        

      最后

      
      
       
      
      
      SendFile方法雖然用起來非常的方便,但也有自身的優缺點
      優點:發送文件時自動創建線程,即使發送大文件時也不會影響主線程運行,不用擔心發送過程的狀態,文件發送完成時會自動返回。
      缺點:只能發送指定路徑的文件,發送過程中得不到已發送的流量,所以不能觀察其發送的狀態。
      大家可以根據自己所設計的系統環境采用SendFile方法,雖然SendFile的缺點讓我們情難以堪,但是發送一些小文件還是很方便的,比如圖片,文本文檔等等。
       
      
      
      
      

      
      
       
      源碼下載

       

      posted @ 2011-11-18 17:28  Daniel.Zhao  閱讀(11045)  評論(11)    收藏  舉報
      主站蜘蛛池模板: 一区一区三区产品乱码| 精品无人乱码一区二区三区的优势| 好男人社区在线www| 免费人成视频在线 | 亚洲色婷婷综合久久| 国产精品无码素人福利不卡| 亚洲国产精品一区二区久| free性开放小少妇| 亚洲欧美激情在线一区| 亚洲av成人一区二区三区| 热久在线免费观看视频| 国产成人精品免费视频大全| 色综合网天天综合色中文| 浮妇高潮喷白浆视频| 亚洲中文字幕一二三四区| 国产精品国三级国产av| 久久免费偷拍视频有没有| 国产精品成人午夜福利| 亚洲岛国成人免费av| 日本伊人色综合网| 丰满的熟妇岳中文字幕| 在线看国产精品自拍内射| 麻豆精品久久久久久久99蜜桃| 久久美女夜夜骚骚免费视频| 亚洲精品国产自在久久| 天堂a无码a无线孕交| 午夜不卡久久精品无码免费| 亚洲av伊人久久综合性色| 金坛市| 丰满的少妇一区二区三区| 人妻丝袜AV中文系列先锋影音| 亚洲日本欧洲二区精品| 一本一道av中文字幕无码| 国产精品一码二码三码| 亚洲高潮喷水无码AV电影| 乱人伦无码中文视频在线| 亚洲av成人无网码天堂| 91中文字幕一区在线| 国产成人精品一区二区三| 免费人妻无码不卡中文字幕18禁| 国产精品一区二区麻豆蜜桃|