首页 > 其他 > 详细

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

时间:2014-04-20 12:35:12      阅读:594      评论:0      收藏:0      [点我收藏+]

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

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

 

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

bubuko.com,布布扣
        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;
}
bubuko.com,布布扣

客户端

bubuko.com,布布扣

定义全局变量

1
Socket sendsocket;

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

bubuko.com,布布扣
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();//隐藏窗体
        }
bubuko.com,布布扣

线程执行体

bubuko.com,布布扣
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;
            }
        }
bubuko.com,布布扣

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

bubuko.com,布布扣

定义全局变量

1
2
Socket hostSocket;
Thread thread;

按钮事件(开启服务)

bubuko.com,布布扣
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();
        }
bubuko.com,布布扣

线程执行体

bubuko.com,布布扣
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();
            }
        }
bubuko.com,布布扣

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

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

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

 

C#局域网桌面共享软件制作(一),布布扣,bubuko.com

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

原文:http://www.cnblogs.com/liuxiaobo93/p/3675387.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!