C#局域網桌面共享軟件制作(一)


很久沒有寫文章了,今天分享的內容是局域網桌面共享軟件,相信很多人都做過,也可能遇到一些問題,這里我將一一測試。

涉及到的內容有:局域網文件傳輸、桌面截屏、圖片壓縮等。為了更直白的演示程序的功能所以沒有對代碼進行封裝。

 

獲取桌面圖片,十分簡單.

        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#局域網桌面共享軟件制作(二)

 轉載,請注明出處和相關鏈接,否則追究其法律責任!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM