自己寫遠端控制軟體之網路傳輸
網路傳輸最重要的事情就是定義通訊協議。何謂協議?協議就是通訊雙方以溝通為目的所做的約定。具體到這裡就是定義訊息頭,這分為兩部分,
A - 伺服器發往客戶端的影象
B - 客戶端發往伺服器的命令
以下是程式碼:
A - 伺服器發往客戶端的影象
B - 客戶端發往伺服器的命令
以下是程式碼:
#ifndef PacketHead_H
#define PacketHead_H
//////////////////////////////////////////////////////////////////////////
#include <Windows.h>
//////////////////////////////////////////////////////////////////////////
enum
{
STAMP_PACKET = 0xE2DDB090, // 標誌戳,用於接收端判斷是否是包頭
};
enum
{
BOARD_PORT = 7001, // 廣播埠
};
//////////////////////////////////////////////////////////////////////////
struct PacketHead
{
DWORD dwStamp; // 標誌戳
DWORD dwLength; // 包長度
};
//////////////////////////////////////////////////////////////////////////
enum
{
CTRL_MOUSE = 1, // 滑鼠控制資訊
CTRL_KEYBOARD = 2, // 鍵盤控制資訊
};
struct RemoteCtrl // 控制包結構
{
DWORD dwCtrl; // 標識滑鼠或鍵盤訊息
union
{
struct // 滑鼠訊息
{
DWORD x; // x 座標
DWORD y; // y 座標
DWORD dwFlags; // 按下或鬆開標誌
DWORD dwWidth; // 客戶端螢幕寬度
DWORD dwHeight; // 客戶端螢幕高度
//由於 CaptureScreen 沒有抓到滑鼠,為保持控制滑鼠座標精度,傳送x,y,width,height,以便在伺服器端計算滑鼠座標
};
struct // 鍵盤訊息
{
UINT nChar;
UINT nFlags;
};
};
};
enum
{
MAX_WIDTH = 1280, // 假設伺服器螢幕最大寬度
MAX_HEIGHT= 960, // 假設伺服器螢幕最大高度
MAX_JPEG_SIZE = MAX_WIDTH * MAX_HEIGHT, // 假設壓縮後的 JPG 最大容量
MAX_BITMAP_SIZE = MAX_WIDTH * MAX_HEIGHT * 3 + sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER), // 最大 Bmp 容量
MAX_BUFFER_COUNT= 8, // 緩衝區個數
};
//////////////////////////////////////////////////////////////////////////
//SOCKET_POST 是我寫的 IOCP Post 的頭, Post 不用我解釋了吧?你懂的。
//SOCKET_POST_CTRL 是客戶端到伺服器的控制訊息
struct SOCKET_POST_CTRL : public SOCKET_POST
{
HANDLE hQueue; // 緩衝區佇列控制程式碼
// 傳送/接收資料的剩餘大小
DWORD dwLeftSize; // 對於傳送,是指未 IOCP 未傳送完的大小,以便調整緩衝區指標再傳送, 傳送完成 = 0
// 對於接收,是指分析出包大小後,未接收到完整包時可再接收, 接收完成 = 0
DWORD dwRecvFlag; // 用於標識是接收包頭還是包資料
WSABUF wsaBuf[1]; // WSABUF 結構,你懂的
PacketHead pktHead; // 包頭
RemoteCtrl remoteCtrl;// 包資料
};
//SOCKET_POST_IMAGE 是伺服器到客戶端的影象訊息
struct SOCKET_POST_IMAGE : public SOCKET_POST
{
HANDLE hQueue; // 緩衝區佇列控制程式碼
// 傳送/接收資料的剩餘大小
DWORD dwLeftSize; // 對於傳送,是指未 IOCP 未傳送完的大小,以便調整緩衝區指標再傳送, 傳送完成 = 0
// 對於接收,是指分析出包大小後,未接收到完整包時可再接收, 接收完成 = 0
DWORD dwRecvFlag; // 用於標識是接收包頭還是包資料
WSABUF wsaBuf[1]; // WSABUF 結構,你懂的
PacketHead pktHead; // 包頭
CHAR szBuffer[MAX_JPEG_SIZE];// 包資料
};
//////////////////////////////////////////////////////////////////////////
#endif
相關文章
- 自己寫遠端控制軟體之捕捉螢幕
- 自己寫遠端控制軟體之隱藏介面
- 自己寫遠端控制軟體之鍵鼠響應
- 自己寫遠端控制軟體之偵測伺服器伺服器
- 自己寫遠端控制軟體之影象壓縮
- 遠端桌面控制軟體,遠端桌面控制軟體推薦,及其連線方法
- vnc遠端控制軟體,vnc遠端控制軟體有什麼用,操作教程VNC
- VNC遠端控制軟體XP版,VNC遠端控制軟體XP版下載VNC
- 遠端控制軟體 LogMeIn
- vnc遠端控制軟體怎麼用,vnc遠端控制軟體怎麼用,使用教程VNC
- vnc遠端控制軟體,vnc遠端控制軟體怎麼使用,vnc server如何安裝?VNCServer
- VNC遠端控制軟體:VNC Server for MacVNCServerMac
- VNC Server for Mac(VNC遠端控制軟體)VNCServerMac
- 遠端控制軟體哪個好用?精選安全遠控軟體ToDesk
- vnc遠端控制軟體x64,vnc遠端控制軟體x64安裝方法,及使用教程VNC
- vnc遠端控制軟體中文版,細數五款好用的vnc遠端控制軟體中文版VNC
- 2024遠端控制軟體排名1
- 國外遠端控制軟體排行榜
- 外網電腦遠端內網電腦用什麼軟體,沒有外網可以遠端控制嗎內網
- TeamViewer遠端控制軟體,讓你享受遠端辦公的便利View
- TransData for Mac - 網路資料傳輸速率監測軟體Mac
- 網路資料傳輸速率監測軟體:TransData for MacMac
- vnc遠端控制軟體綠色,vnc遠端控制軟體綠色版下載,使用者登入使用教程VNC
- 最佳RDP/VPN替代方案:Splashtop遠端控制軟體
- 高流暢的遠端控制軟體推薦
- USB 控制寫傳輸、控制讀傳輸、無資料控制傳輸都是在什麼場景下?
- 影片監控遠端傳輸方案
- linux windows遠端傳輸工具LinuxWindows
- 計算機網路之傳輸層計算機網路
- 八大遠端控制軟體,完美替代TeamviewerView
- 開源一款遠端控制軟體 —— pcshare
- 怎麼遠端傳輸大檔案?
- ClearCase遠端客戶端軟體在網路環境下的配置應用客戶端
- VNC遠端協助軟體,VNC遠端協助軟體下載!VNC
- 最快的遠端控制軟體radmin的配置和使用
- 遠端控制軟體 TeamViewer 的侷限性和替代方案View
- VNC Connect Enterprise Mac(遠端桌面控制軟體)VNCMac
- 專業商用遠端控制軟體,低至10元每月