C#使用Socket上传并保存图片的方法

C#使用Socket上传并保存图片的方法,第1张

概述本文实例讲述了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,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,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,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,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#程序设计有所帮助。

总结

以上是内存溢出为你收集整理的C#使用Socket上传并保存图片的方法全部内容,希望文章能够帮你解决C#使用Socket上传并保存图片的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260926.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存