第一次发文,也是啥也不会,初次接触C#,觉得网络通信挺好玩,就在网上找例子看,有很多例子和方法都可以实现传送图片,同步或异步,通过套接字或者简单的客户端等等都可以通过Networkstream流实现数据 文件  图片等的收发,所以小小尝试一下,感谢各位前辈的指导,也感谢无数无私奉献的前辈的例子

https://download.csdn.net/download/qq_42459294/10971751#0-qzone-1-13814-d020d2d2a4e8d1a374a433f596ad1440


服务器代码

 class Program{//全局TcpClientstatic TcpClient client;//文件流建立到磁盘上的读写流static FileStream fs = new FileStream("C:\\Users\\HGS\\Desktop\\2.jpg", FileMode.Create);//static  MemoryStream fs = new MemoryStream();//bufferstatic byte[] buffer = new byte[1024*1024];//网络流static NetworkStream ns;static void Main(string[] args){Connectclient();}static void Connectclient(){//服务端IpTcpListener listener = new TcpListener(IPAddress.Parse("192.168.0.145"), 50800);//监听对象开始监听listener.Start();while (true){Console.WriteLine("wait connected");client = listener.AcceptTcpClient();Console.WriteLine("conected");//获取客户端网络流ns = client.GetStream();int readresult = -1;Thread.Sleep(1000);//如果网络流中有数据while (ns.DataAvailable){Thread.Sleep(10);//异步读取网络流中的byte信息ns.BeginRead(buffer, 0, buffer.Length, ReadAsyncCallBack, null);//readresult += ns.Read(buffer, 0, buffer.Length);}//if (readresult < 1)//{//    client.Close();//    ns.Dispose();//    fs.Dispose();//    return;//}//fs.Write(buffer, 0, readresult);}}/// <summary>/// 异步读取/// </summary>/// <param name="result"></param>static void ReadAsyncCallBack(IAsyncResult iar){int readCount;//获得每次异步读取数量readCount = client.GetStream().EndRead(iar);//如果全部读完退出,垃圾回收if (readCount < 1){client.Close();ns.Dispose();fs.Dispose();return;}//将网络流中的图片数据片段顺序写入本地fs.Write(buffer, 0, readCount);//Console.WriteLine(buffer);//Bitmap Img = new Bitmap(fs);//Img.Save(@"2.png", ImageFormat.Png);//再次异步读取//ns.BeginRead(buffer, 0, buffer.Length, ReadAsyncCallBack, null);}}

客户端代码:首先需要抓取桌面图片,并命名图片存储类型和名字

  /// <summary>/// 截取桌面图片/// </summary>/// <returns></returns>public static Bitmap getScreen(){Bitmap bitimage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);//获得位图的长宽Graphics g = Graphics.FromImage(bitimage);// 创建GDI+绘图g.CopyFromScreen(new Point(0, 0), new Point(0, 0), Screen.AllScreens[0].Bounds.Size);//从屏幕到绘图画面截取图片g.Dispose();return bitimage;}/// <summary>/// 保存图片/// </summary>/// <param name="b"></param>public static void img2file(Bitmap b){confirmexis(filePath);//判断文件是否存在,不存在则创建string  bpath=filenamepaths();//获取图片数量,按照数量命名b.Save(bpath, System.Drawing.Imaging.ImageFormat.Png);}/// <summary>/// 获取图片数量/// </summary>/// <returns></returns>public static string filenamepaths( ){           string[] filenamepath = Directory.GetFiles("C:\\Users\\abc\\Desktop\\imgae");string Numname = "C:\\Users\\HGS\\Desktop\\imgae\\image" + Convert.ToString(filenamepath.Length)+ ".png";           return Numname ;}

客户端发送数据:

if (File.Exists(imgURl)){  //创建一个文件流打开图片FileStream fs = File.Open(imgURl, FileMode.Open);//声明一个byte数组接受图片byte信息byte[] fileBytes = new byte[fs.Length];using (fs){//将图片byte信息读入byte数组中fs.Read(fileBytes, 0, fileBytes.Length);fs.Close();}try{IPAddress address = IPAddress.Parse("192.168.0.145");//创建TcpClient对象实现与服务器的连接TcpClient client = new TcpClient();//连接服务器client.Connect(address, 50800);using (client){//连接完服务器后便在客户端和服务端之间产生一个流的通道NetworkStream ns = client.GetStream();using (ns){//通过此通道将图片数据写入网络流,传向服务器端接收ns.Write(fileBytes, 0, fileBytes.Length);}}}catch { }//找到服务器的IP地址}

END

C# TCP通信发送桌面图片到服务器相关推荐

  1. 【iOS】Socket/TCP 通信 发送 NSString 字符串格式数据

    Socket/TCP 原理这里就不阐述了,网上一搜一大堆,直接上关键代码. [注]iOS 目前有非常著名的第三方库 CocoaAsyncSocket 可以使用,但是我们项目当时做大数据上报要求直接发送 ...

  2. Java如何实现不同局域网TCP通信+群聊(云服务器实现)

    最近在CSDN上学习了Socket通信群聊的方法,就觉得这样就可以实现QQ的样子了.然后让女朋友用电脑试了一下,运行用户端代码,发现连连接到服务器都做不到.后来经过自己的研究,实现了QQ群聊的功能,后 ...

  3. 科佩克机器人TCP通信(机器人控制器作为服务器)

    文章目录 一.修改机器人控制端的IP地址 1. 依次点击**系统,权限管理**,在用户登录界面输入密码: 2. 同时按**上档,联锁,清除**:界面切换如图所示, 3. 在左下角划出start控件,选 ...

  4. 网络通信-2(TCP通信、ServerSocket、Socket)

    1. TCP通信 UDP中只有发送端和接收端,不区分客户端和服务器端.计算机之间可以任意地发送消息. TCP通信严格区分客户端和服务器. 通信时,必须由客户端去连接服务器才能实现通信.服务器不可主动连 ...

  5. Java笔记整理七(网络编程,TCP通信程序,函数式接口,方法引用)

    网络编程入门 1.软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器和 ...

  6. Lua语言使用TCP通信

    首先我们下载一个网络调试助手方便调试,下载地址:http://free.cmsoft.cn/reslink.php?id=205,Lua语言使用的TCP通信只能发送以\n结尾的字符串. TCP通信se ...

  7. qt客户端显示服务器发送的图片,qt客户端显示服务器发送的图片

    qt客户端显示服务器发送的图片 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...

  8. asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  9. 专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信

    源码下载地址为: http://download.csdn.net/detail/qq78442761/9856423 ---------------------------------------- ...

最新文章

  1. python--安装PIL
  2. 破解加密PDF文件pdfcrack
  3. linux系统vsftpd登陆慢卡怎么办
  4. 如何将多个Android Wear手表与单个手机配对
  5. 推动Windows的限制:进程和线程
  6. 如何有效提高你的沟通技巧
  7. jmeter报“msg“:“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“的解决方法
  8. ubuntu16.04装机7:安装VScode
  9. Git 报错:error: The requested URL returned error: 401 Unauthorized while accessing
  10. PHP 下载pdf预览和下载pdf文件
  11. matlab怎样设置中文界面
  12. jQuery 进度条实现
  13. JavaScript之this释疑
  14. .NET方面的框架的整理和总结
  15. 信息 按顺序打印commit_风火快递单打印软件按导入数据顺序批量打印,但打出来的顺序和导入的表格里的?...
  16. harmonyOS hdc配置以及自动签名
  17. 零线和地线的区别、示波器如何测量市电
  18. 数字图像处理---低高通滤波实验(MATLAB实现)
  19. 地下城英雄 java_英雄小组
  20. 术业有专攻,数据库的 dba

热门文章

  1. 努比亚手机权限开启方法3
  2. 纯css实现图片的灯光照射效果,高逼格图片展示
  3. 非黑!也不是刺激战场粉!我来说说我用安卓模拟器玩全军出击那些事儿
  4. 推出 TensorFlow 中文视频:机器学习从零到一,Google官方发布视频,有美女主持,美女声音甜美特别好,有B站地址,超级高清看美女费颖教你学机器学习TensorFlow,只有码农才懂的。
  5. LintCode 1207. 提莫攻击 JavaScript算法
  6. 你的格局,决定了你的结局
  7. 像素艺术海报特效ps动作 Vexel Art Poster Photoshop Action
  8. ai绘画软件“数画”上线元宇宙真人虚拟头像,技术远超国外
  9. 基于Processing的动画交互
  10. python3.7 百度网盘_编程开发工具Python v3.7.0 32/64位免费正式版下载[网盘资源] - 艾薇下载站...