| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
mb78
10年前发布

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;              }  }  }  }