C# 通过Socket上传并保存图片的代码

C# 通过Socket上传并保存图片的代码,第1张

概述C# 通过Socket上传并保存图片代码

下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。

内存溢出小编现在分享给大家,也给大家做个参考。

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

以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

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

总结

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

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

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

原文地址:https://54852.com/langs/1238054.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存