最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用Socket上傳并保存圖片的方法

 更新時(shí)間:2015年04月22日 12:23:26   作者:令狐不聰  
這篇文章主要介紹了C#使用Socket上傳并保存圖片的方法,涉及C#使用Socket進(jìn)行文件傳輸?shù)南嚓P(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了C#使用Socket上傳并保存圖片的方法。分享給大家供大家參考。具分析如下:

使用string filename = openFile.FileName;即返回帶全路徑的文件名 Path.GetFileNameWithoutExtension(filename)即可獲得不帶路徑、后綴名的文件名。 上傳圖片使用二進(jìn)制 tcp協(xié)議上傳的

客戶端代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
namespace socketClient
{
 public partial class Form1 : Form
 {
  Socket clientSocket;
  private static byte[] result = new byte[1024];
  
  public Form1()
  {
   InitializeComponent();
  }
  private void buttonBegin_Click(object sender, EventArgs e)
  {
   //設(shè)定服務(wù)器IP地址
   IPAddress ip = IPAddress.Parse("127.0.0.1");
   clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
   try
   {
    clientSocket.Connect(new IPEndPoint(ip, 8000));
 //配置服務(wù)器IP與端口
   }
   catch
   {
    MessageBox.Show("連接服務(wù)器失敗");
 
    return;
   }  
  }
  private void buttonClose_Click(object sender, EventArgs e)
  {
   this.Close();
  }
  private void buttonSelect_Click(object sender, EventArgs e)
  {
   OpenFileDialog openFile = new OpenFileDialog();
   openFile.Filter = "圖像文件(*.bmp;*.gif;*.jpg;*.jpeg;*.png)|*.bmp;*.gif;*.jpg;*.jpeg;*.png";
   openFile.Multiselect = false;
 
   if (openFile.ShowDialog() == DialogResult.OK)
   {
    textBox2.Text =openFile.FileName;
   }
   //string filename = openFile.FileName;
   //即返回帶全路徑的文件名
   //Path.GetFileNameWithoutExtension(filename)
   //即可獲得不帶路徑、后綴名的文件名。
   byte[] msg = Encoding.Default.GetBytes(Path.GetFileNameWithoutExtension(openFile.FileName));
   clientSocket.Send(msg);
   try
   {
    //開始使用socket發(fā)送文件
    FileStream fs = new FileStream(openFile.FileName, FileMode.OpenOrCreate, FileAccess.Read);
    byte[] fssize = new byte[fs.Length];
    BinaryReader strread = new BinaryReader(fs);
    strread.Read(fssize, 0, fssize.Length - 1);
    clientSocket.Send(fssize);
    fs.Close();
    clientSocket.Shutdown(System.Net.Sockets.SocketShutdown.Send);
    clientSocket.Close();
   }
   catch (Exception ex)
   {
    string s = ex.ToString();
    return;
   }
  }
 }
}

服務(wù)器端代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO;
using System.Drawing.Imaging;
namespace socketServer
{
 public partial class Form1 : Form
 {
  private static byte[] result = new byte[1024];
   Socket serverSocket;
  public Form1()
  {
   InitializeComponent();
  }
  private void button1_Click(object sender, EventArgs e)
  {
   try
   {
   IPAddress ip = IPAddress.Parse("127.0.0.1");
   IPEndPoint iep = new IPEndPoint(ip, 8000);
   serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
   serverSocket.Bind(iep); 
   serverSocket.Listen(10);   
   byte[] recvBytes = new byte[1024];
   int bytes = newSocket.Receive(recvBytes, recvBytes.Length, SocketFlags.None);//從客戶端接受信息 
   string name = Encoding.ASCII.GetString(recvBytes, 0, bytes);
   textBox1.Text = name+".jpg";
    //設(shè)置接收數(shù)據(jù)緩沖區(qū)的大小 
    byte[] b = new byte[1024 * 4];
    MemoryStream fs = new MemoryStream();
    int got = 0;
    int datalength = 0;
    while (true)
    {
     got = newSocket.Receive(b);
     fs.Write(b, 0, got);
     if (got > 0)
      datalength = datalength + got;
     else
      break;
    }
    Bitmap Img = new Bitmap(fs);
    pictureBox1.Image = Img;
    string filename = name + ".jpg";
    Img.Save(@"D:images"+filename, ImageFormat.Jpeg);
    //關(guān)閉寫文件流
    fs.Close();
    //關(guān)閉接收數(shù)據(jù)的Socket 
    newSocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive);
    newSocket.Close();  
   }
   catch (Exception se)
   {
    serverSocket.Close();
    MessageBox.Show("連接錯(cuò)誤" + se.ToString());
    return;
   }
  }
 }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#中IList 與 List 的區(qū)別小結(jié)

    C#中IList 與 List 的區(qū)別小結(jié)

    IList 接口和 List 類是 C# 中用于集合操作的兩個(gè)重要的類型,本文主要介紹了C#中IList 與 List 的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • WPF自定義控件實(shí)現(xiàn)ItemsControl魚眼效果

    WPF自定義控件實(shí)現(xiàn)ItemsControl魚眼效果

    這篇文章主要為大家詳細(xì)介紹了WPF如何通過自定義控件實(shí)現(xiàn)ItemsControl魚眼效果,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2024-01-01
  • 使用C#實(shí)現(xiàn)一個(gè)PPT遙控器

    使用C#實(shí)現(xiàn)一個(gè)PPT遙控器

    由于本人需要參加的討論會(huì)比較多,每次都會(huì)涉及到PPT,有時(shí)候坐在電腦旁講會(huì)比較不生動(dòng),前人就發(fā)明了PPT遙控器,今天就給大家介紹下基于C#實(shí)現(xiàn)ppt遙控器,感興趣的朋友一起看看吧
    2021-05-05
  • C# 多線程處理List數(shù)據(jù)的示例代碼

    C# 多線程處理List數(shù)據(jù)的示例代碼

    這篇文章主要介紹了C# 多線程處理List數(shù)據(jù)的示例代碼,幫助大家更好的理解和使用c#編程語言,感興趣的朋友可以了解下
    2020-12-12
  • 淺談C#泛型的用處與特點(diǎn)

    淺談C#泛型的用處與特點(diǎn)

    泛型是 2.0 版 C# 語言和公共語言運(yùn)行庫 (CLR) 中的一個(gè)新功能。泛型將類型參數(shù)的概念引入 .NET Framework,類型參數(shù)使得設(shè)計(jì)如下類和方法成為可能:這些類和方法將一個(gè)或多個(gè)類型的指定推遲到客戶端代碼聲明并實(shí)例化該類或方法的時(shí)候
    2013-09-09
  • C#簡(jiǎn)單實(shí)現(xiàn)子窗體向父窗體傳值的方法

    C#簡(jiǎn)單實(shí)現(xiàn)子窗體向父窗體傳值的方法

    這篇文章主要介紹了C#簡(jiǎn)單實(shí)現(xiàn)子窗體向父窗體傳值的方法,以實(shí)例形式較為詳細(xì)的分析了C#窗體間傳值的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • 關(guān)于C#中async/await的用法實(shí)例詳解

    關(guān)于C#中async/await的用法實(shí)例詳解

    這篇文章主要介紹了關(guān)于C#中async/await的用法,今天寫一個(gè)demo徹底搞明白async/await的用法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • C# winform分頁查詢的實(shí)現(xiàn)示例

    C# winform分頁查詢的實(shí)現(xiàn)示例

    這篇文章主要介紹了C# winform分頁查詢的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 詳解C#如何監(jiān)控選定文件夾中文件的變動(dòng)情況

    詳解C#如何監(jiān)控選定文件夾中文件的變動(dòng)情況

    這篇文章主要為大家詳細(xì)介紹了C#如何監(jiān)控選定文件夾中文件的變動(dòng)情況,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C# 中this關(guān)鍵字的主要作用

    C# 中this關(guān)鍵字的主要作用

    this 關(guān)鍵字在C#中主要用于引用當(dāng)前對(duì)象,區(qū)分字段與局部變量,調(diào)用其他構(gòu)造函數(shù)以及傳遞當(dāng)前對(duì)象給其他方法或構(gòu)造函數(shù),本文重點(diǎn)介紹C# this關(guān)鍵字的作用,感興趣的朋友一起看看吧
    2024-02-02

最新評(píng)論

佛教| 高邮市| 静安区| 东乌| 鄯善县| 巫溪县| 浪卡子县| 辽阳县| 从化市| 云林县| 西昌市| 张家口市| 河间市| 昌邑市| 平利县| 绥江县| 安平县| 湖南省| 拜泉县| 西平县| 峨边| 濉溪县| 祁东县| 宁陕县| 大兴区| 孙吴县| 横峰县| 慈利县| 湟中县| 绥阳县| 安吉县| 长兴县| 汾西县| 峨山| 呼图壁县| 高台县| 安化县| 峡江县| 阿鲁科尔沁旗| 中宁县| 南华县|