C#應用Socket上傳並保留圖片的辦法。本站提示廣大學習愛好者:(C#應用Socket上傳並保留圖片的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用Socket上傳並保留圖片的辦法正文
本文實例講述了C#應用Socket上傳並保留圖片的辦法。分享給年夜家供年夜家參考。具剖析以下:
應用string filename = openFile.FileName;即前往帶全途徑的文件名 Path.GetFileNameWithoutExtension(filename)便可取得不領路徑、後綴名的文件名。 上傳圖片應用二進制 tcp協定上傳的
客戶端代碼:
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) { //設定辦事器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)); //設置裝備擺設辦事器IP與端口 } catch { MessageBox.Show("銜接辦事器掉敗"); 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發送文件 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; } } } }
辦事器端代碼:
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"; //設置吸收數據緩沖區的年夜小 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); //封閉寫文件流 fs.Close(); //封閉吸收數據的Socket newSocket.Shutdown(System.Net.Sockets.SocketShutdown.Receive); newSocket.Close(); } catch (Exception se) { serverSocket.Close(); MessageBox.Show("銜接毛病" + se.ToString()); return; } } } }
願望本文所述對年夜家的C#法式設計有所贊助。