时间:2021-05-20
本文实例讲述了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#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#使用Socket实现发送和接收图片的方法。分享给大家供大家参考。具体如下:usingSystem;usingSystem.Collection
本篇文章介绍了使用c#如何后台处理图片的几种方法,具体代码如下:第一种:将上传图片直接保存到本地varsupportedTypes=new[]{"jpg","j
很多时候木马程序会伪装成其他格式的文件上传到网站,最常见的如图片格式。本文就以C#为例讲述C#判断上传文件是否是图片以防止木马上传的方法,具体方法如下:方法一:
本文展示了一个C#的Socket操作类的完整实例,并附带了用法说明,分享给大家供大家参考之用。具体方法如下:主要功能代码如下:usingSystem;using
本文实例讲述了C#对图片文件的压缩、裁剪操作方法,在C#项目开发中非常有实用价值。分享给大家供大家参考。具体如下:一般在做项目时,对图片的处理,以前都采用在上传