关于网络的数据传输我就是个小白,所以今天学习一下简易的Socket图片传输。

客户端和服务器的连接咱们上次已经学过了,咱们先从简易的文件传输入手。下面开始代码分析了。

Server.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Server
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){lab_pro.Text = "接收:0/100";  }/// <summary>/// 开启服务/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){button1.Text = "监听中...";button1.Enabled = false;Socket receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPEndPoint hostIpEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.100"), 121);//设置接收数据缓冲区的大小byte[] b = new byte[4096];receiveSocket.Bind(hostIpEndPoint);//监听receiveSocket.Listen(2);//接受客户端连接Socket hostSocket = receiveSocket.Accept();//如何确定该数组大小MemoryStream fs = new MemoryStream();int length = 0;//每次只能读取小于等于缓冲区的大小while ((length = hostSocket.Receive(b)) > 0){fs.Write(b, 0, length);if (progressBar1.Value <100){progressBar1.Value++;lab_pro.Text = "接收:" + progressBar1.Value + "/100";}}progressBar1.Value = 100;lab_pro.Text = "接收:" + progressBar1.Value + "/100";fs.Flush();Bitmap Img = new Bitmap(fs);Img.Save(@"reveive.jpg", ImageFormat.Png);//关闭写文件流
            fs.Close();//关闭接收数据的Socket
            hostSocket.Shutdown(SocketShutdown.Receive);hostSocket.Close();//关闭发送连接
            receiveSocket.Close();}    }
}

客户端Client.cs

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.Tasks;
using System.Windows.Forms;namespace Client
{public partial class Form1 : Form{public Form1(){InitializeComponent();}static Socket sendsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);OpenFileDialog openFileDialog1 = new OpenFileDialog();Byte[] imgByte = new byte[1024];/// <summary>/// 打开本地文件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btm_scane_Click(object sender, EventArgs e){this.openFileDialog1.Filter  = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG" +"|All Files (*.*)|*.*";if (this.openFileDialog1.ShowDialog() == DialogResult.OK){try{string path = this.openFileDialog1.FileName;lab_path.Text = path;FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);imgByte = new Byte[fs.Length];fs.Read(imgByte, 0, imgByte.Length);fs.Close();}catch (Exception){}}}/// <summary>/// 向服务器发送数据/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btn_send_Click(object sender, EventArgs e){//实例化socket        IPEndPoint ipendpiont = new IPEndPoint(IPAddress.Parse("192.168.1.100"), 121);sendsocket.Connect(ipendpiont);MessageBox.Show("服务器IP:"+sendsocket.RemoteEndPoint);sendsocket.Send(imgByte);sendsocket.Shutdown(System.Net.Sockets.SocketShutdown.Send);sendsocket.Close();sendsocket.Dispose();}}
}

运行结果:

开启服务:

发送图片:

局域网测试传输图片通过,希望对大家学习有帮助,如有错误可以联系我哦。

转载于:https://www.cnblogs.com/wuzhang/p/wuzhang20141119.html

C# Socket 简易的图片传输相关推荐

  1. C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)

    C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示) 作者:一点一滴的Beer http://beer.cnblogs.com/ 在程序设计中,涉及数据存储和数据交换的时候 ...

  2. .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示

    本文讲下C#通过Socket编程实现平行主机之间网络通讯的详细讲解,非常不错的博文,一起来看下吧.      在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念 ...

  3. Linux 图片传输功能c/c++(初版)

    由于深度学习任务的需要,要在程序里面嵌入一个module. 这个module 的功能是接收来自ios客户端的图片.并且传送给深度学习分类器进行处理. 于是看了看各种各样的 module 实现方案. 先 ...

  4. WebRTC实时通信系列教程9 数据通道图片传输

    [转载请注明出处: http://blog.csdn.net/leytton/article/details/76838194]  PS:如果本文对您有帮助,请点个赞让我知道哦~ <WebRTC ...

  5. 三十八、网络通信Socket模块实现文件传输

    @Author: Runsen 实现的效果如下的Gif所示,就是网络通信Socket模块实现文件下载传输. 文章目录 服务端 客户端 扩展 服务端 首先需要获取本机ip,这里服务端采用多线程的方法,就 ...

  6. ROS学习—opencv使用之图片传输

    ROS学习-opencv使用之图片传输 前提操作:ros已安装,opencv已安装. 首先在工作空间中新建一个功能包rosopencv catkin_create_pkg rosopencv sens ...

  7. java socket 工具_java Socket简易聊天工具

    本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢. 代码运行如图,看起来还不错 服务端 package qiu; import java.awt.BorderLayout; import ...

  8. 图片传输到ipfs节点然后将生成的ipfs访问链接存到区块链

    在区块链上直接存储图片不仅时间很长,而且需要进行分片和拼接,比较麻烦,我们直接使用ipfs存储图片 流程描述: 首先在本地搭建ipfs节点,使用go-ipfs版本进行搭建,搭建完之后,使用 ipfs ...

  9. python 图片自动分类机_用tensorflow神经网络实现一个简易的图片分类器

    文章写的不清晰请大家原谅QAQ 这篇文章我们将用 CIFAR-10数据集做一个很简易的图片分类器. 在 CIFAR-10数据集包含了60,000张图片.在此数据集中,有10个不同的类别,每个类别中有6 ...

最新文章

  1. 2021-2027年中国智能家居设备行业市场前瞻与投资策略规划报告
  2. 科研项目 | 深度参与前沿课题研究,全英华人教授协会(ABCP)资深学者亲授
  3. Eclipse中的Web项目自动部署到Tomcat
  4. halcon算子翻译——dev_set_window
  5. 和我一起打造个简单搜索之ElasticSearch入门
  6. Chrome 私人珍藏-AdBlock插件实现浏览器广告屏蔽,超强力
  7. 【PCB学习笔记】绘制智能车四层板 --- DRC检查,拼版设计及资料输出
  8. XML的三大解析方式解析
  9. 【系统分析师之路】第二十一章 复盘系分专业英语
  10. lunix内核—死锁的四个必要条件和解决办法
  11. oracle 密码解锁
  12. 关于FFmpeg对手机里拍摄的视频进行转码时角度问题的处理
  13. 接上一篇——上海有哪些值得加入的互联网公司
  14. 看完这篇文章,保你学会C语言 :for 循环
  15. Python自动化脚本:清空回收站的内容
  16. idea 配置 git 教程
  17. 关于我使用vue-quill-editor遇到的一些“坑”
  18. 深入WindowsME之系统还原(转)
  19. 烟台大学计算机专业宿舍,烟台大学宿舍条件怎么样 住宿环境好不好
  20. AWS S3 (Simple Storage Service)

热门文章

  1. JQuery EasyUI DataGrid
  2. mysql InnoDB 行锁分析
  3. [导入]七大千年数学难题
  4. IBM ThinkPad错误代码列表
  5. SQLite指南(5) - PRAGMA命令用法(完整)
  6. [Java] 蓝桥杯ALGO-48 算法训练 关联矩阵
  7. 配置项、基线以及软件配置控制委员会
  8. c语言程序设计笔记手写图片,C语言程序设计笔记.pdf
  9. 带你通俗理解https
  10. Parasoft软件测试实践:什么是左移测试?