很久沒有寫文章了,今天分享的內容是局域網桌面共享軟件,相信很多人都做過,也可能遇到一些問題,這里我將一一測試。
涉及到的內容有:局域網文件傳輸、桌面截屏、圖片壓縮等。為了更直白的演示程序的功能所以沒有對代碼進行封裝。
獲取桌面圖片,十分簡單.
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#局域網桌面共享軟件制作(二)
轉載,請注明出處和相關鏈接,否則追究其法律責任!