C# TCP通信发送桌面图片到服务器
第一次发文,也是啥也不会,初次接触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通信发送桌面图片到服务器相关推荐
- 【iOS】Socket/TCP 通信 发送 NSString 字符串格式数据
Socket/TCP 原理这里就不阐述了,网上一搜一大堆,直接上关键代码. [注]iOS 目前有非常著名的第三方库 CocoaAsyncSocket 可以使用,但是我们项目当时做大数据上报要求直接发送 ...
- Java如何实现不同局域网TCP通信+群聊(云服务器实现)
最近在CSDN上学习了Socket通信群聊的方法,就觉得这样就可以实现QQ的样子了.然后让女朋友用电脑试了一下,运行用户端代码,发现连连接到服务器都做不到.后来经过自己的研究,实现了QQ群聊的功能,后 ...
- 科佩克机器人TCP通信(机器人控制器作为服务器)
文章目录 一.修改机器人控制端的IP地址 1. 依次点击**系统,权限管理**,在用户登录界面输入密码: 2. 同时按**上档,联锁,清除**:界面切换如图所示, 3. 在左下角划出start控件,选 ...
- 网络通信-2(TCP通信、ServerSocket、Socket)
1. TCP通信 UDP中只有发送端和接收端,不区分客户端和服务器端.计算机之间可以任意地发送消息. TCP通信严格区分客户端和服务器. 通信时,必须由客户端去连接服务器才能实现通信.服务器不可主动连 ...
- Java笔记整理七(网络编程,TCP通信程序,函数式接口,方法引用)
网络编程入门 1.软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构.常见程序有QQ.迅雷等软件. B/S结构 :全称为Browser/Server结构,是指浏览器和 ...
- Lua语言使用TCP通信
首先我们下载一个网络调试助手方便调试,下载地址:http://free.cmsoft.cn/reslink.php?id=205,Lua语言使用的TCP通信只能发送以\n结尾的字符串. TCP通信se ...
- qt客户端显示服务器发送的图片,qt客户端显示服务器发送的图片
qt客户端显示服务器发送的图片 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. ...
- asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 专业课程设计之客户与服务器程序的同步与通信机制的设计(二)TCP通信
源码下载地址为: http://download.csdn.net/detail/qq78442761/9856423 ---------------------------------------- ...
最新文章
- python--安装PIL
- 破解加密PDF文件pdfcrack
- linux系统vsftpd登陆慢卡怎么办
- 如何将多个Android Wear手表与单个手机配对
- 推动Windows的限制:进程和线程
- 如何有效提高你的沟通技巧
- jmeter报“msg“:“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“的解决方法
- ubuntu16.04装机7:安装VScode
- Git 报错:error: The requested URL returned error: 401 Unauthorized while accessing
- PHP 下载pdf预览和下载pdf文件
- matlab怎样设置中文界面
- jQuery 进度条实现
- JavaScript之this释疑
- .NET方面的框架的整理和总结
- 信息 按顺序打印commit_风火快递单打印软件按导入数据顺序批量打印,但打出来的顺序和导入的表格里的?...
- harmonyOS hdc配置以及自动签名
- 零线和地线的区别、示波器如何测量市电
- 数字图像处理---低高通滤波实验(MATLAB实现)
- 地下城英雄 java_英雄小组
- 术业有专攻,数据库的 dba
热门文章
- 努比亚手机权限开启方法3
- 纯css实现图片的灯光照射效果,高逼格图片展示
- 非黑!也不是刺激战场粉!我来说说我用安卓模拟器玩全军出击那些事儿
- 推出 TensorFlow 中文视频:机器学习从零到一,Google官方发布视频,有美女主持,美女声音甜美特别好,有B站地址,超级高清看美女费颖教你学机器学习TensorFlow,只有码农才懂的。
- LintCode 1207. 提莫攻击 JavaScript算法
- 你的格局,决定了你的结局
- 像素艺术海报特效ps动作 Vexel Art Poster Photoshop Action
- ai绘画软件“数画”上线元宇宙真人虚拟头像,技术远超国外
- 基于Processing的动画交互
- python3.7 百度网盘_编程开发工具Python v3.7.0 32/64位免费正式版下载[网盘资源] - 艾薇下载站...