C# Socket TCP发送图片与接收图片

  • A+
所属分类:.NET技术
摘要

如果需要查看更多文章,请微信搜索公众号 csharp编程大 全,需要进C#交流群群请加微信z438679770 ,备注进群, 我邀请你进群! ! !

如果需要查看更多文章,请微信搜索公众号 csharp编程大,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! !

---------------------------------------------------------------------------------------------------------------------------------

运行结果:

C# Socket TCP发送图片与接收图片

 

 发送端代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;  using System.IO; using System.Net.Sockets; using System.Net;  namespace tcp {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }          private void Form1_Load(object sender, EventArgs e)         {             //textBox1.Text = "101.91.224.228";             textBox1.Text = "192.168.1.100";             textBox2.Text = "8008";         }         FileStream fs = new FileStream(@"1.jpg", FileMode.Open);         private void SendImage(IPAddress remoteIP,int Port)         {             //实例化socket                            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             IPEndPoint ipep = new IPEndPoint(remoteIP, Port);             socket.Connect(ipep);             long contentLength = fs.Length;             //第一次发送数据包的大小                        socket.Send(BitConverter.GetBytes(contentLength));             while (true)            {                 //每次发送128字节                                byte[] bits = new byte[128];                 int r = fs.Read(bits, 0, bits.Length);                 if (r <= 0) break;                 socket.Send(bits, r, SocketFlags.None);             }             socket.Close();             fs.Position = 0;         }          private void button1_Click(object sender, EventArgs e)         {             SendImage(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));             MessageBox.Show("发送成功");         }     } } 

  接收端代码:

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;  namespace recTCP {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }          private void Form1_Load(object sender, EventArgs e)         {              //RecviveImage();             textBox1.Text = "8008";         }          private void RecviveImage(int port)         {             new Thread(delegate () {             Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);             IPEndPoint ipep = new IPEndPoint(IPAddress.Any, port);             socket.Bind(ipep);             socket.Listen(2);             while (true)                 {                     try                     {                         byte[] data = new byte[8];                         Socket clientSocket = socket.Accept();                         if (clientSocket.Connected)                         {                             clientSocket.Receive(data, data.Length, SocketFlags.None);                             long contentLength = BitConverter.ToInt64(data, 0);                             int size = 0;                             MemoryStream ms = new MemoryStream();                             while (size < contentLength)                             {                                 byte[] bits = new byte[128];                                 int r = clientSocket.Receive(bits, bits.Length, SocketFlags.None);                                 if (r <= 0) break;                                 ms.Write(bits, 0, r);                                 size += r;                             }                             Image img = Image.FromStream(ms);                             this.Invoke((EventHandler)delegate                              {                                 pictureBox1.Image = img; //更新在窗体控件上                                                        });                             clientSocket.Close();                             ms.Flush();                             ms.Close();                             ms.Dispose();                         }                     }                     catch { }                 }             })             { IsBackground = true}.Start();         }          private void button1_Click(object sender, EventArgs e)         {             RecviveImage(int.Parse(textBox1.Text));          }     } } 

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

如果需要查看更多文章,请微信搜索公众号 csharp编程大全,需要进C#交流群群请加微信z438679770,备注进群, 我邀请你进群! ! !