• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

 

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

        private Bitmap GetScreen()
        {
            Bitmap bitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            Graphics g = Graphics.FromImage(bitmap); 
g.CopyFromScreen(
0, 0, 0, 0, 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()), 10001);
                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(1000);//我这里设置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()), 10001);
            //关联结点
            receiveSocket.Bind(hostIpEndPoint);
            receiveSocket.Listen(10);
            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[1024 * 10000];//图片很大
                    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#局域网桌面共享软件制作(二)

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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[c#基础]AutoResetEvent发布时间:2022-07-13
下一篇:
C#设置WebBrowser IE浏览器版本发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap