很久没有写文章了,今天分享的内容是局域网桌面共享软件,相信很多人都做过,也可能遇到一些问题,这里我将一一测试。

涉及到的内容有:局域网文件传输、桌面截屏、图片压缩等。为了更直白的演示程序的功能所以没有对代码进行封装。

获取桌面图片,十分简单.

        private Bitmap GetScreen()
{
Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(, , , , bitmap.Size);
return bitmap;
}

客户端

定义全局变量

Socket sendsocket;

按钮事件(连接服务器,并发送桌面截图)

private void btnConn_Click(object sender, EventArgs e)
{
try
{
sendsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//实例化socket,ip为192.168.1.106,Port为10001
IPEndPoint ipendpiont = new IPEndPoint(IPAddress.Parse(textBox1.Text.Trim()), );
sendsocket.Connect(ipendpiont);
//建立终结点
Thread th = new Thread(new ThreadStart(threadimage));
th.IsBackground = true;
th.Start();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
return;
}
this.Hide();//隐藏窗体
}

线程执行体

private void threadimage()
{
try
{
while (true)
{
MemoryStream ms = new MemoryStream();
GetScreen().Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);//我这里用bmp格式
byte[] b = ms.ToArray();
sendsocket.Send(b);
Thread.Sleep();//我这里设置1秒发送一次
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
return;
}
}

服务端(窗体中有一个PictureBox)

定义全局变量

Socket hostSocket;
Thread thread;

按钮事件(开启服务)

private void btnStart_Click(object sender, EventArgs e)
{
Socket receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint hostIpEndPoint = new IPEndPoint(IPAddress.Parse(textBox1.Text.Trim()), );
//关联结点
receiveSocket.Bind(hostIpEndPoint);
receiveSocket.Listen();
MessageBox.Show("start");
hostSocket = receiveSocket.Accept(); thread = new Thread(new ThreadStart(trreadimage));
thread.IsBackground = true;
thread.Start();
}

线程执行体

private void trreadimage()
{
try
{
while (true)
{
byte[] b = new byte[ * ];//图片很大
hostSocket.Receive(b);
MemoryStream ms = new MemoryStream(b);
Image img=Image.FromStream(ms);
picReceive.Image = img;
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
thread.Abort();
}
}

如果你去测试这个程序就会发现存在一些问题,后面我将处理你所遇到的问题。

由于程序简单所以就不上传源码附件了。

C#局域网桌面共享软件制作(二)

转载,请注明出处和相关链接,否则追究其法律责任!

C#局域网桌面共享软件制作(一)的更多相关文章

  1. C#局域网桌面共享软件制作(三)

    到周末了,继续做这个桌面共享软件,下面是前两篇的链接, 链接 C#局域网桌面共享软件制作(一) 链接 C#局域网桌面共享软件制作(二) 通过对图片进行压缩以后,每张图片大小38K左右(win7/102 ...

  2. C#局域网桌面共享软件制作(二)

    链接C#局域网桌面共享软件制作(一) 如果你运行这个软件查看流量监控就会发现1~2M/s左右的上传下载,并且有时会报错“参数无效”,如果你将屏幕截图保存到本地的话每张图片大概4M(bmp).120KB ...

  3. wpf 客户端【JDAgent桌面助手】开发详解(二)桌面宠物制作详解

    目录区域: wpf 客户端[JDAgent桌面助手]业余开发的终于完工了..晒晒截 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]开发详解(一)主窗口 ...

  4. C# 使用UDP组播实现局域网桌面共享

    最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. 需求:将一台机器的桌面通过网络显示到多个客户端的屏幕上,显示内容可能为PPT,Word文档之类 ...

  5. (转)C# 使用UDP组播实现局域网桌面共享

    转:http://www.cnblogs.com/mobwiz/p/3715743.html 最近需要在产品中加入桌面共享的功能,暂时不用实现远程控制:参考了园子里的一些文章,加入了一些自己的修改. ...

  6. ubuntu14.04 3D桌面效果制作

    参考:http://www.360doc.com/content/14/0919/22/11681374_410808557.shtml

  7. 桌面共享UDP组播实现

    组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接.如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包.它提高了数据传送效率.减少了骨干网络出现拥塞的 ...

  8. wpf 客户端【JDAgent桌面助手】开发详解(四) popup控件的win8.0的bug

    目录区域: 业余开发的wpf 客户端终于完工了..晒晒截图 wpf 客户端[JDAgent桌面助手]开发详解-开篇 wpf 客户端[JDAgent桌面助手]详解(一)主窗口 圆形菜单... wpf 客 ...

  9. Windows10上桌面共享

    Windows自带的桌面共享软件 命令行输入: Msra.exe

随机推荐

  1. Java中的Property类

    Property是JAVA中的属性操作类,该类在java.util包中,它是HashTable的子类. 常用函数列表: l  Properties() n  构造函数 l  setProperty(S ...

  2. java 反射技术

    什么是反射?反射就是将字节码中的各种成分映射到相应的java类中来,java反射技术自JDK1.1以来就出现了,目前大多数流行的框架都采用了这种技术,可见其重要性,这篇文章将详细介绍我对java反射技 ...

  3. List<Object>和List<String>

    下面的代码在JAVA中是不可以的: import java.util.*; public class Test { public static void main(String[] args) { L ...

  4. POJ 2396 Budget【网络流】

    题意: cas           //测试数据组数 n m         //行数 列数 a1 a2 ... an    //每行的和 b1 b2 ... bn   //每列的和 q       ...

  5. 百度之星IP聚合(水题map&字符处理)

    虽然题目停水的,但是好像字符处理运用的还比较合适 Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊 ...

  6. var obj = {};var obj2 = [];var obj3;

    <script> var obj = {}; console.log(obj); var obj2 = []; console.log(obj2); var obj3; console.l ...

  7. JQuery上传插件uploadify优化

    旧版的uploadify是基于flash上传的,但是总有那么些问题,让我们用的不是很舒服.今天主要分享下在项目中用uploadify遇到的一些问题,以及优化处理 官方下载 官方文档 官方演示 下面是官 ...

  8. WIFI知识累计之802.11协议radiotap头解析方法

    radiotap官方网站:http://www.radiotap.net/Radiotap 该网站详细介绍了radiotap的各个字段的长度和介绍,并包含解析代码项目地址,该文就在此网站的基础编写一些 ...

  9. 图像JPEG格式介绍

    1 JPG格式介绍 JPEG (Joint PhotographicExperts GROUP)是由国际标准组织和国际电话电报咨询委员会为静态图像所建立的第一个国际数字图像压缩标准,也是至今一直在使用 ...

  10. CentOS 6.5 Maven 编译 Apache Tez 0.8.3 踩坑/报错解决记录

    最近准备学习使用Tez,因此从官网下载了最新的Tez 0.8.3源码,按照安装教程编译使用.平时使用的集群环境是离线的,本打算这一次也进行离线编译,无奈一编译就开始报缺少jar包的错,即使手动下载ja ...