加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:55:31 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 C# 通过Socket上传并保存图片的代码 string filename = openFile.FileName;即返回带全路径的文件名 Path.GetFileNameWithoutExtension(filename)即可

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读