Vous êtes sur la page 1sur 51

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Muc Luc
LI M AU...................................................................................................................................................2 PHAN MOT : LY THUYET.........................................................................................................................5

A.C S LAP TRNH TREN WINDOWS. LAP TRNH BAT ONG BO WINSOCK...............................................................5 I. LAP TRNH WINDOWS:.......................................................5 1.Ham Winmain() :.............................................................................5 2.Ham ca so:.................................................................................5 3.Cac lp ca so:..........................................................................5 4.Chu trnh x ly thong bao:.........................................................5 5.Tng tac gia windows va chng trnh:...................................6 6.Ham API (Application Program Interface):.......................................6 7.Hang i cua mot ng dung va vong lap message:...........7 8.S o mo ta cach thc quan ly thiet b nhap:.................8 9.S lc ve truyen nhan thong bao trong moi trng windows:..............................................................................................8 a)Standard Windows message:.........................................................9 b)Control notification message:........................................................9 c)Command message:......................................................................9 10.Device Context va GDI:.................................................................9 2. LAP TRNH WINSOCK: PROTOCOL TCP/IP..........................10 1.Tong quan:....................................................................................10 2.Bo giao thc TCP/IP:....................................................................10 a)IP (internet protocol) :..................................................................11 b)TCP ( Transmission Control Protocol):..........................................14 B.LY THUYET ANH BMP - FILE ANH BMP:...........................19 1. File Header : ...................................................................19 2. Windows Bitmap header:.................................................20 3. Color map:.......................................................................20 4. Windows Bitmap data :....................................................21
PHAN HAI : THIET KE...............................................................................................................................23

A.TONG QUAT CHNG TRNH..............................................23 I. Mo hnh hoat ong cua chng trnh Client:..................23 II. Mo hnh hoat ong cua chng trnh Client:.................24 B. PHAN CAPTURE ANH........................................................25 I. GIAI THUAT COPY MOT ANH BITMAP TREN MAN HNH VAO BO NH.................................................................25 II. GIAI THUAT HIEN TH ANH BITMAP VA C COPY ........................................................................................... 27 3. GIAI THUAT LU ANH THANH FILE .BMP.....................30 C.PHAN GIAO THC.............................................................33 I. NH NGHA GIAO THC SCREEN CAPTURE (GOI TAT LA SCAPP) :.............................................................................. 33 1.Muc ch :.......................................................................................33 2.nh dang cac Request :............................................................33 3.nh dang cac Reply :..................................................................34 4.Mot v du ve ap ng cua server khi nhan c request :. 35 SV: Phan Cong Tu Trang 1

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

II. HIEN THC SERVER THEO GIAO THC SCAPP................36 1.X ly thong iep FD_READ : ....................................................36 2.X ly thong iep FD_WRITE : ..................................................36 3.X ly thong iep FD_ACCEPT : ................................................38 4.Giai thuat phan tch request :....................................................39 5.Xay dng Reply:...........................................................................41 III. HIEN THC CLIENT THEO GIAO THC SCAPP.................43 1.X ly thong iep FD_READ :.....................................................43 2.Xay dng Request:.......................................................................45 3.Phan tch reply:.............................................................................46
PHAN BA : HNG DAN S DUNG CHNG TRNH ...............................................................48 PHAN BON : CHNG TRNH NGUON..................................................................................................51

LI M AU

Ngay nay he ieu hanh window chiem lnh mot u the ln ve tnh nang va giao dien gan gui vi ngi s dung so vi cac he ieu hanh khac. Viec tm hieu ve cach lu tr hnh anh va SV: Phan Cong Tu Trang 2

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

hien th chung that la thu v. e tai capture man hnh chu yeu la lam ro van e tren va yeu cau m rong ra viec kiem soat man hnh t xa tren mang.No cung phuc vu cho cac muc ch trao oi t xa. Em xin cam n s ch bao cua thay hng dan Nguyen Van Hiep, cam n anh Nguyen Tuan Loc a giup , cac ban hoc cung gop y vao s hoan thanh bao cao nay. Chan thanh Cam n Khoa CNTT a tao ieu kien thc tap. Sinh vien thc tap Phan Cong Tu

SV: Phan Cong Tu

Trang 3

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

YEU CAU VA PHAN TCH YEU CAU

Yeu cau : nh ngha giao thc Screen Capture( goi tat la SCAPP) e phuc vu cho viec capture hnh anh tren may ma server ang chay, server thc hien cac chc nang : Cat toan bo man hnh desktop Cat mot khung hnh ch nhat bat ky co cac toa o left, top, right, bottom do user chon. Cat mot ca so chng trnh ang hoat ong foreground tren server Cat mot ca so chng trnh co ten cu the.

Hien thc server phuc vu cac dch vu tren. Hien thc server theo giao thc SCAPP. Hien thc Client theo giao thc SCAPP. Chng trnh Client co the giao tiep vi nhieu server cung mot luc, lay hnh anh ve, hien th theo dang thu nho, Khi can, user co the phong ln. Chng trnh co the yeu cau mot dch vu theo chu ky hoac nh ky. Hien thc ng dung tren moi trng windows. Phan tch yeu cau : T cac yeu cau c neu ra, ta a ra cac van e lien quan khi xay dng ng dung nay, o la : C s lap trnh tren windows. Lap trnh bat ong bo winsock. Ly thuyet ve anh BMP. Cac ham API e ho tr cho viec capture anh

SV: Phan Cong Tu

Trang 4

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

PHAN MOT : LY THUYET


A. C S LAP TRNH TREN WINDOWS. LAP TRNH BAT ONG BO WINSOCK.
I. LAP TRNH WINDOWS: 1. Ham Winmain() : Tat ca moi chng trnh windows bat au nhiem vu cua mnh bang viec goi ham Winmain(). Ham Winmain() co tnh chat phan biet ham nay vi cac ham khac trong ng dung la no can c mo ta trong chng trnh WINAPI, gia tr tra ve la int. 2. Ham ca so: Tat ca cac chng trnh oi vi win95 can phai cha ham nao o c goi t he ieu hanh ch khong phai c goi t chnh chng trnh. Ham nay c goi la ham ca so hay thu tuc ca so. Ham ca so c goi bi he ieu hanh windows khi can gi thong bao cho chng trnh. Mot ng dung giao tiep vi ngi s dung qua mot hay nhieu ca so(window), moi ca so trong ng dung c ket hp vi mot ham ca so, ham nay co nhiem vu x ly cac thong bao (message) do he ieu hanh windows gi ti. Ham ca so lay thong bao do windows gi lam thong so. 3. Cac lp ca so: Khi viet chng trnh, phai ang ky lp ca so : thong bao cho Windows ve ac tnh c ban va chc nang cua ca so. 4. Chu trnh x ly thong bao: Tat ca ng dung trong Windows eu phai khi ong chu trnh x ly thong bao trong ham winmain(). Chu trnh nay chon thong bao t day cac thong bao cua ng dung va gi chung tr lai cho Windows. Sau o windows lai goi ham ca so cua chng trnh va truyen thong bao va roi cho no vi t cach la tham so. Ly do phai lam nh vay la chng trnh can phai tra ieu khien cho bo ieu phoi cua windows, no se phan phoi thi gian cua bo x ly trung tambao am hoat ong toi u nhat. SV: Phan Cong Tu Trang 5

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

5. Tng tac gia windows va chng trnh : Trong Windows, chng trnh ch thong bao Windows gi en. Thong bao c chuyen vao chng trnh nh viec goi mot ham ac biet ma viec goi ham nay cung c thc hien t Windows. Sau khi nhan c thong bao chng trnh co the thc hien mot so hanh ong. Cac hanh ong nay co the co ca lenh goi mot so ham API va chnh Window se khi xng viec nay.

6. Ham API (Application Program Interface): e truy cap cac giao dien trong windows ta co the s dung tap cac ham goi la giao dien chng trnh ng dung API. API gom vai tram ham cho phep cac chng trnh co the truy cap ti cac nguon tai nguyen cua windows. Mot bo phan API goi la giao dien thiet b o hoa GDI (Graphic Device Interface) thc hien chc nang duy tr s oc lap vi cac thiet b o hoa. Trong windows9x va windows NT s dung Win32 API vi cach anh a ch 32 bit.

SV: Phan Cong Tu

Trang 6

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

7. Hang i cua mot ng dung va vong lap message: Window s K User an phm K ng Dung Vong lap message ham Winmain() lay phm K t hang i ng dung.

Hang i he thong

Hang i ng dung Windows nhan message (phm K) t vong lap message cua ng dung va gi en windows function. Khi window function goi ham TextOut(), windows se xuat ra ky t K vao ca so ng dung. K K

K TextOut()

Window function goi ham TextOut()

SV: Phan Cong Tu

Trang 7

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

8. S o mo ta cach thc quan ly thiet b nhap: Windows Keyboar d System Queue WinMain Message Loop

Keyboar d Device Driver

Application Queue

Mouse Device Driver Other Application Queue

Thu tuc WndProc

Mouse

Thu tuc DefWndProc

9. S lc ve truyen nhan thong bao trong moi trng windows: Trong mot chng trnh ng dung Windows, ngi s dung tao ra mot bien co(Windows event) nh nhap chuot hay nhan phm, no se tao ra mot thong bao va c a vao hang ch he thong cua Windows, t o Windows se lay thong bao t hang ch he thong va lan lt phan phat thong bao ti hang ch cua cac ng dung tng ng. Cac hang ch nay lam viec theo c che FIFO. Chng trnh ng dung lan lt lay nhng thong bao trong hang ch bang viec goi ham GetMessage() hay PeekMessage() va gi en ham x ly bien co cho no. Neu ham x ly bien co nay khong x ly c th thong bao nay se c tra ngc ve cho Windows va Windows se goi ham DefWindowProc e huy no. Windows API co hn 400 loai message va co the c chia thanh 3 loai chnh: + Standard Windows message. +Control notification message. SV: Phan Cong Tu Trang 8

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

+Command message. a) Standard Windows message: Bao gom tat cac thong boa bat au vi t WM_ ngoai tr WM_COMMAND (standard message). ay la cac thong bao do windows va views nh thay oi thanh scroll bar, yeu cau ve lai ca so V du nh WM_CREAT, WM_PAINT, WM_CLOSE, WM_DESTROY b) Control notification message: Nh e cap tren WM_. Thong bao c t ong tao ra khi ca so con b thay oi no se gi thong bao nay cho ca so quan ly no biet. V du : EN_CHANGE c) Command message: Thong bao co ten la WM_COMMAND va c nh danh cu the trong LOWORD(wParam). Thong bao loai nay c tao ra khi user chon mot menu item, click chuot tren toolbar button, hay nhan mot phm nong (accelerator). 10. Device Context va GDI: Do co rat nhieu thiet b output va v khong co mot chuan rieng biet e ve ra thiet b xuat nen Windows cung cap mot cau truc d lieu la Device Context. No lam nhiem vu lien ket gia ng dung va trnh ieu khien thiet (low_level API hay device driver) e ieu khien thiet b xuat. Moi Device Context la mot object cua Windows cho phep ra lenh ve t ng dung va chuyen oi cac lenh nay ra cac ch th mc thap hn va co the a en cho device driver. en lt mnh device driver se gi cac lenh nhan c t Device Context gi ti thiet b can thiet nh man hnh hay may in. Khi ve mot anh chung ta xuat cac lenh en Device Context ma khong can quan tam en loai thiet b xuat nao se c dung hay device driver nao se am nhan viec ieu khien thiet b output. Thay vao o, chung ta co the n gian cong viec bang cach lay handle cua Device Context va ve ra tren Device Context o. Device Context nay se chuyen cac len cua ng dung thanh mc thap hn cap device driver va chuyen cho device driver. Device driver se gi lenh nay en thiet b xuat cu the va thiet b xuat o am nhan cong viec con lai la hien th len ca so hay in ra. Ngoai ra Windows con nh ngha mot loai object khac la SV: Phan Cong Tu Trang 9

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

GDI( graphic device interface object) e ve len tren ca so hay in ra. Khi muon ve anh tren windows ta phai dung ket hp ca hai cong cu tren la Device Context va GDI. Sau khi ve phai giai phong Device Context va cac cong cu ve ve cho he thong e cac ng dung khac co the dung tai nguyen nay.

2. LAP TRNH WINSOCK: PROTOCOL TCP/IP

1. Tong quan:

Application layer Transport Layer Internet layer Host-To-Network Mo hnh TCP/IP 4 cap .

Lp Application : Chng trnh ng dung muon trao oi d lieu, o co cac qua trnh tham gia gi nhan d lieu. V du: TelNet, DNS, FTP. Lp Transport : Cho phep cac thc the tren host nguon va ch thc thi tac vu hoan chuyen d lieu va kiem soat ng truyen. Lp InterNet : e ket noi cac mang lai vi nhau , can mot giao tiep cap Network, IP. Giao thc nay ho tr tot nhat e van chuyen cac goi Datagrams t source en destinationma khong quan tam en cac may nay co cung tren mot mang hay la co ton tai mot mang nao gia chung. 2. Bo giao thc TCP/IP: Truyen thong trong Internet nh sau: Lp TranSport nhan dong d lieu va phan thanh cac goi datagrams. Ve ly thuyet moi datagram co the en SV: Phan Cong Tu Trang 10

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

64Kbyte, nhng thc te thng khoang 1500 bytes Moi datagram c chuyen tiep xuong lp Internet va co the b phan thanh nhng n v nho hn. Khi tat ca cac mau en ch, chung c lp Internet hp lai thanh datagram ban au, gi len lp Transport, chen vao qua trnh nhan dong Input. a) IP (internet protocol) : *nh dang cua mot IP datagram cua tang Network gom : +Header : 20 byte co nh +Option : thay oi t 0 en 40 bytes

32 bits

Version

IHL

Type of service

Total length D M Fragment offset F F Header checksum

Identification Time to live Protocol

Source address Destination address Options (0 or more words)

a ch IP : la mot so nh phan 32 bit. ay la a ch dung trong field ource address va destination address cua IP header. Co 5 lp a ch : A,B,C,D,E Lp Mien a ch ac iem

SV: Phan Cong Tu

Trang 11

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

A B C D E

1.0.0.0 127.255.255.255 128.0.0191.255.255.255 192.0.0.0223.255..255.255 224.0.0.0239.255.255.255 240.0.0.0247.255.255.255

8 bit network 16 bit network 24 bit network For Multicast For Future

Co mot so a ch IP ac biet : 0.0.0.0 : la chnh may nay

0.0_._._ :la host cua mang nay 1.1.1.1 :broastcast tren mang cuc bo Network(12bit).111..1(20bit) :broastcast tren mang t xa. 127._._._ : e kiem tra viec lap lai (loopback) . Mot packet co a ch nay c x ly cuc bo va c xem nh packet va en. No khong c gi ra card mang. ac iem nay giup cho viec kiem tra loi phan mem mang . Cac Subnets : Phan a ch c trch ra danh cho a ch Subnet. V du : mot cach chia subnet mang lp B

10 Network

Subnet

New Host

Vi Old Host = Subnet + New Host Moi Router co bang cha a ch IP (Network{e en mang xa},0) va IP (mang nay ,Host{e en cac may cuc bo}) cung vi giao tiep mang dung e en c ch va nhng thong tin khac. Khi mot IP Packet en, a ch ch c tm kiem trong bang tm ng. Neu packet danh cho mang xa, no c chuyen tiep en router ke tiep co trong phan giao tiep trong bang .

SV: Phan Cong Tu

Trang 12

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Neu la mot Host cuc bo (vd : tren mang LAN cua Router) no c gi trc tiep en ch. Neu mang khong ton tai (Router khong cha mang ch), packet c chuyen tiep en mot Router ngam nh co nhieu bang m rong hn. Giai thuat nay co ngha la moi Router ch phai gi mot so a ch mang va a ch cua Host cuc bo ch khong phai cap (Network, Host) , giam thieu phan ln kch thc cua bang tm ng. V sao phai can Subnet? Gia s mot c quan ang dung mot mang LAN co a ch thuoc lp C (gii han 254 may). Neu c quan co nhieu hn 254 may, ho phai can mot a ch lp C th hai. Mot cach khac , can mot mang LAN th hai co kieu khac va mot a ch IP phan biet vi mang LAN nay( cac mang LAN co the noi vi nhau bang cau noi e hnh thanh mot mang ch co mot IP) , Ket qua la, c quan nay co the co nhieu mang LAN, moi mang LAN co mot Router rieng va moi mang LAN co a ch lp C rieng. Nh vay can them a ch IP nen phai lien he vi NIC xin a ch va thong bao cho toan the gii biet ieu nay. ay la nhc iem. e tranh nhc iem tren, co giai phap la : Cho phep mot Network c chia thanh nhieu phan cho viec s dung ben trong nhng van ong vai tro nh mot mang n oi vi the gii ben ngoai. Cac phan nay goi la cac Subnet. ARP (Address Resolution Protocol): Cac Host co mot card giao tiep mang, lay v du card Ethernetco a ch vat ly la 48 bit. Moi card c san xuat ra eu co a ch rieng cua mnh. Card co nhiem vu gi nhan Frame thong qua a ch 48 bit . Chung khong biet a ch IP 32 bit. Mot Host x muon gi data sang host khac. No biet a ch dang trang trc kien. Qua DNS( domain name system) co c a ch IP ch, la y. Phan mem pha tren xay dng mot packet co a ch ch la IP va nhan(y) nh phan mem IP gi i. Pham mem IP so sanh a ch IP e biet c no thuoc mang nao. Nhng khong biet c a ch cua card giao tiep mang Ethernet. Co hai cach giai quyet : + Dung mot file anh xa a ch IP va a ch Ethernet. T o neu biet c a ch IP th suy ra c a ch Ethernet va ngc lai. Tuy nhien, neu so may ln th viec lu tr , cap nhat file nay ton nhieu thi gian va de b sai. SV: Phan Cong Tu Trang 13

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

+ Host x gi thong iep : Ai gi a ch IP y. Moi may tren mang se kiem tra a ch IP y vi a ch IP cua no . Neu khong co a ch IP tren mang nay th coi nh IP ch Router cua mang. Neu co th ch co mot reply cha a ch Ethernet cua may ch. Giao thc e hoi va tra li nay goi la ARP. Moi may tren Internet eu c trang b phan mem ARP. No c nh ngha san trong RFC826. Neu a co c a ch cua card Ethernet ,goi la z. Phan mem IP se xay dng mot frame Ethernet, at packet IP vao field payload va gi ra mang. Card Ethernet cua may ch phat hien frame nay, nhan lay no va gay ra mot ngat cho he thong. Driver Ethernet bung IP packet t payload va gi len phan mem IP x ly. Giao thc RARP (Reverse Address Resolution Protocol) : Ngc lai vi giao thc ARP : cho a ch Ethernet, tm c a ch IP. Van e la : co a ch Ethernet, can biet a ch IP tng ng xay ra khi boot may t xa. Mot may khi c boot t xa ( khong co a cuc bo) se lay ban nh phan (binary image)cua he ieu hanh t file server t xa. Lam sao may nay biet c a ch IP cua no ? Giai phap la dung RARP ( a nh ngha san trong RFC 903). RARP cho phep mot may tram va c boot len, broadcast a ch Ethernet cua no va hoi ve a ch IP tng ng. RARP server thay yeu cau nay, tra tm a ch Ethernet trong file cau hnh va gi ngc lai a ch IP ung. b) TCP ( Transmission Control Protocol) : TCP chuan c nh ngha trong RFC793. Tuy nhien co sai, a c sa va nh ngha lai trong RFC1122, m rong hn RFC1323. e n gian, hieu TCP la : Mot thc the Transport (mot phan mem) hoac Giao thc TCP (tap hp cac qui luat )

Tuy ng canh ma se hieu nh the nao . Mot cau noi TCP ch c thiet lap gia hai socket. Mot socket bao gom a ch IP cua host va so 16 bit cua port thuoc host. So port<256 la nhng ports quen thuoc dung trong cac tac vu chuan. Cau noi TCP la mot dong byte, khong phai dong thong iep. Do o ben nhan khong the biet c ben gi a SV: Phan Cong Tu Trang 14

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

gi d lieu thanh nhng n v bao nhieu byte. Cac thc the TCP chuyen oi d lieu thanh tng segment (oan). Mot segment gom 20 byte header co nh + phan option + cac byte data (co hoac khong). Phan mem TCP se cho phep kch thc mot oan la bao nhieu, hai gii han ve kch thc oan: Moi oan TCP nam trong field payload 65.535 byte cua goi IP. Moi oan co gii han trong MTU(Maximum Transfer Unit), la n v chuyen ln nhat cho phep cua mot mang cu the.

Mot oan kch thc qua ln oi vi mot mang ma no phai chuyen qua co the c phan thanh nhieu oan nho hn bi Router. Moi oan mi co IP rieng. Giao thc c ban c TCP dung la ca so dch. Khi ben gi gi mot segment, no kch timer. Khi bo nhan nhan c segment, no gi ACK ve va yeu cau segment co so th t tiep theo ma no muon nhan. Neu timer a het ma khong co ACK quay ve th ben gi gi segment o lai mot lan na. nh Dang TCP segment header:

Source port Sequence number

Destination port

Acknowledgement number TCP Head er lengt h U A P R S F R C S S Y I G K H T N N Window size

Checksum

Urgent pointer

Options(0 or more 32 bit words) Data(optional) SV: Phan Cong Tu Trang 15

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

TCP header Source port va destination port co gia tr t 256. a ch port + a ch IP = a ch 48 bit TSAP (Transport Service Access Point). Dung a ch TSAP e chuyen thong iep gia hai qua trnh t xa tren mang khi a co cau noi TCP. Cau noi source va ch c xac nh bi cac so socket source va ch. URG=1, neu co dung pointer urgen. Pointer ch en o di mot byte t so th t hien tai, tai o d lieu khan se c tm thay. ACK=1, neu ACK number co c dung. PSH ch d lieu c push. Neu bit nay c set. Ben nhan se chuyen d lieu sang ng dung ma khong phai buffer e chuyen mot lan. RST c dung e reset lai cau noi. SYN e thiet lap cau noi. FIN e release cau noi.

Kiem soat truyen dung ca so dch co kch thc thay oi. Window size cho biet co bao nhieu byte co the c gi bat autai byte ACK. Neu window size=0, ngha la cac byte t 1 en ACK number 1 a c nhan va ben nhan khong nhan na. Neu muon nhan tiep th window size<>0, field ACK number=ACK number tren. Checksum = 0 khi ang thc hien giai thuat checksum. Giai thuat nay bien cac t 32 bit thanh bu 1 va sau o bien thanh so bu 1 cua tat ca. Thiet lap Cau noi: e thiet lap cau noi, chnh server phai thc thi tac vu LISTEN, i ket noi t Client. Client thc thi tac vu CONNECT, trong o ch ra a ch IP va port muon ket noi en, kch thc oan TCP ln nhat ma no san sang nhan va co the ch ra password cho viec ket noi. Tac vu CONNECT gi mot oan TCP, vi bit SYN c set va ACK off, sau o i tra li t server. Khi oan TCP en server, phan mem TCP kiem tra co ton tai mot qua trnh nao ang LISTEN tren port c ch ra trong field SV: Phan Cong Tu Trang 16

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Destination Port hay khong. Neu khong, no tra li bang cach gi reply co bit RST c set e bao rang khong chap nhan ket noi. Neu co, qua trnh o c nhan segment TCP gi en. Sau o chnh qua trnh nay co the chap nhan cau noi hoac khong dung en no. Moi lan nh vay ch co the tao mot cau noi tren hai host. a co cau noi , e trao oi d lieu vi nhau gia hai host ch can gi data ra cau noi . Host nhan se oc data t cau noi theo tng goi TCP.

SV: Phan Cong Tu

Trang 17

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Mo hnh Client-Server dung Streams (TCP) :

Client Server Socket() Create the socket Bind() Give the socket a Name Listen() Listen for Connections From Clients. Wait for Connections from Clients

Socket() Create the socket Connect() Connect to the server

Accept() Accepting to the connection causes a new socket to be created while the original socket continues to wai for new connections Send()/recv() Send and Receive Data Closesocket() Close the connection

Send()/recv() Send and Receive Data Closesocket() Close the connection

SV: Phan Cong Tu

Trang 18

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

B. LY THUYET ANH BMP - FILE ANH BMP:

Microsoft .BMP files co the cha cac hnh anh co nh dang 1,4,8 hoac 24 bit moi pixels. Cac anh 1,4,8 bit co bang anh xa mau , trong khi anh 24 bit khong co mau trc tiep. Cac file DIB thng c dung tren ho may tnh x86. Moi file .BMP gom :

File header Bitmap header Color map (tr phi anh la 24 bit ) Image (array of bytes)

1. File Header : Windows BITMAPFILEHEADER file header Offse t 0 2 6 8 10 Size 2 4 2 2 4 Name BfType BfSize BfReserved1 BfReserved2 BfOffBits ASCII-BMSize in bytes of the line Zero Zero Byte offset in file where image begins Description

Field bfOffBits cha so bytes tnh t bat au file en luc bat au cua cac bit cua d lieu anh.

SV: Phan Cong Tu

Trang 19

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

2. Windows Bitmap header: Windows BITMAPINFOHEADER image header Offse t 14 18 22 26 28 30 34 38 42 46 50 54 Size 4 4 4 2 2 4 4 4 4 4 4 4*N Name BiSize BiWidth BiHeight BiPlanes BiBitCount Description Size of this header,40 bytes Image width in pixels Image height in pixels Number of image planes, must be 1 Bits per pixel , 1, 4, 8 or 24

BiCompression Compression type BiSizeImage BiXPelsPerMet er BiYPelsPerMet er BiClrUsed BiClrImportant BiiColors Size in bytes of compressed image, or zero Horizontal resolution, in pixels/meter Vertical resolution , in pixels/meter Number of colors used Number of important colors Color map

3. Color map: Cac anh dung 1, 4 hoac 8 bit moi pixels phai co bang anh xa mau. Kch thc cua bang tng ng la 2,16 hoac 256 iem nhap, nhng co the nho hn neu anh khong can ay u cac mau. Neu biClrUsed khac 0, no cha so mau c dung, o cung la so iem nhap cua bang anh xa mau. Neu field nay bang 0 kch thc bang mau la u. oi vi cac anh 24 bit, khong co bang anh xa mau, dung mau trc tiep RGB. V cac thiet b hien th khong co u mau anh yeu cau, trong bang mau nen co cac iem nhap the hien cac mau quan trong nhat. Filed biClrImportant, neu khac 0, cho biet so mau quan trong cho viec hien th tot anh ve sau.

SV: Phan Cong Tu

Trang 20

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Moi iem nhap trong bang mau gom 4 bytes. Windows RGBQUAD color map entry Offset 0 1 2 3 Name RgbBlue RgbGreen RgbRed RgbReserve d Description Blue value for color map entry Green value for color map entry Red value for color map entry Zero

4. Windows Bitmap data : Data co the khong b nen hoac oi vi cac anh 4 , 8 bits co the dung giai thuat nen RLE. Cac bits data luan ly (hay vat ly neu khong b nen) c lu tr thanh tng dong. Moi dong ket thuc vi 4 byte bang 0. Cac dong bytes c lu tr t dong scan line cuoi cung cua anh en dong cuoi cung. Bitmap 1 bit moi pixel : Moi pixel(iem anh) la mot bit, lu 8 pixel vao moi byte. Bit co th t cao trong byte la pixel trai nhat. Bitmap 4 bit moi pixel : Moi pixel c lu thanh 4 bit, moi byte co the cha 2 pixel oi vi anh khong nen. Moi dong cha 4 bytes ket thuc = 0. oi vi cac anh nen dung ma RLE, cha mot day cac nhom. Co 3 loai nhom : + Nhom lap : 2 bytes, byte au ch so pixel, byte tiep theo ch cap pixel lap lai. V du : 05 24 ch cac pixel 2 4 2 4 2 + Nhom thng : gom byte 0, byte em so pixel, gia tr pixel. Byte em t nhat la 3 (1 hoac 2 pixels co the ma hoa dung nhom lap). Cac byte ch ga tr pixel c em them 0 e tao thanh so byte chan. V du: 00 05 12 34 50 00 ch cac pixel 1 2 3 4 5. + Nhom ac biet :Day 00 00 ch ket thuc dong, day 00 01 ch ket thuc bitmap, day 00 02 xx yy ch mot vung, y ngha la anh c tiep tuc vi xx pixel sang phai va yy pixel xuong Bitmap 8 bit moi pixel : oi vi anh khong nen, moi pixel cha trong mot byte, vi moi dong c chen 4 byte ket thuc. oi vi anh nen dung nh dang RLE bao gom mot day cac SV: Phan Cong Tu Trang 21

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

nhom. Co 3 nhom : + Nhom lap : 2 bytes, byte au la so em pixel, byte tiep theo la gia tr pixel. V du : 05 24 ch cac pixel 24 24 24 24 24. + Nhom thng : gom byte 0, byte em so pixel, gia tr pixel. Byte em t nhat la 3 (1 hoac 2 pixels co the ma hoa dung nhom lap). Cac byte ch ga tr pixel c em them 00 e tao thanh so byte chan. V du : 00 05 12 34 56 78 9A 00 ch cac pixel 12 34 56 78 9A. + Nhom ac biet : giong nh anh 4 bit. Bitmap 24 bit moi pixel : Moi pixel la 3 bytes theo th t : byte ch mau blue, byte ch mau green, va byte ch mau red. Moi dong c chen 4 byte 0 e ch ket thuc.

SV: Phan Cong Tu

Trang 22

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

PHAN HAI : THIET KE


A. TONG QUAT CHNG TRNH
I. Mo hnh hoat ong cua chng trnh Client:

Ket noi en Server Nhan yeu cau t user

Gi yeu cau qua server theo giao thc SCAPP. Gi mot lan hoac theo chu ky.

Nhan ap ng t server, hien th anh BMP

SV: Phan Cong Tu

Trang 23

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

II.

Mo hnh hoat ong cua chng trnh Client: Listen tren port 2908 Nhan Ket noi t Client

oc yeu cau capture. Thc hien dch vu capture.

Gi ap ng cho Client

SV: Phan Cong Tu

Trang 24

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

B. PHAN CAPTURE ANH


I. GIAI THUAT COPY MOT ANH BITMAP TREN MAN HNH VAO BO NH

1. Tao Device Context cho thiet b hien th 2. Tao Device Context cho bo nh compatible vi thiet b

3. Lay o phan giai man hnh, gom so


iem ngang (x) va doc(y)

4. Tao bitmap tng ng vi thiet b. Danh vung nh e lu gia tr cac iem cua anh bitmap

5. Copy cac gia tr mau cua cac iem


anh nam trong vung toa o a cho tren man hnh vao bo nh .

6. Xoa cac device context a tao. Chi tiet: 1. hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL); Ham API CreateDC tao mot Device Context(DC) cho thiet b bang cach dungten ch nh. HDC CreateDC( LPCTSTR lpszDriver, // Con tro en ten driver LPCTSTR lpszDevice, // Con tro ch ten thiet b LPCTSTR lpszOutput, // = NULL SV: Phan Cong Tu Trang 25

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

CONST DEVMODE *lpInitData // con tro khi ong d lieu in, t chon ); V ng dung da tren Win 32, nen lpszDriver b bo qua va set = NULL. Hoac = Display. Khi o cac tham so khac phai set = NULL. 2. hMemDC = CreateCompatibleDC(hScrDC);

Ham API CreateCompatibleDC tao mot Device Context bo nh tng thch vi thiet b c ch nh.
HDC CreateCompatibleDC( HDC hdc // handle cua Device Context ch thiet b. ); 3. xScrn = GetDeviceCaps(hScrDC, HORZRES) : nhan so pixel theo chieu ngang cua man hnh hien tai.

yScrn = GetDeviceCaps(hScrDC, VERTRES) : nhan so pixel theo chieu doc cua man hnh hien tai. 4. hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
4. hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight) Ham CreateCompatibleBitmap tao mot bitmap tng thch vi thiet b ma co Device Context c ch nh. HBITMAP CreateCompatibleBitmap( HDC hdc, int nWidth, int nHeight ); 5. BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY); Ham API Bitblt chuyen khoi bit cua cac d lieu mau tng ng vi cac pixel trong hnh ch nhat t Device Context source sang Device Context ch. Neu bang mau cua source va ch khong giong nhau, ham Bitblt chuyen nh dang mau cho phu hp vi bang mau cua ch. 6. DeleteDC(hScrDC); DeleteDC(hMemDC); SV: Phan Cong Tu Trang 26 // handle to device context // rong cua bitmap, n v la pixels // chieu cao cua bitmap, n v la pixels

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

II.

GIAI THUAT HIEN TH ANH BITMAP VA C COPY

1. Tao Device Context compatible vi Device Context c ch nh.

2. Chon bang mau e hien th.

3. Lay thong tin ve chieu cao, chieu rong cua bitmap se c hien th.

4. Chon Bitmap bo vao Device Context bo nh e hien th.

5. Chuyen khoi d lieu mau cua cac pixel t bo nh ra man hnh.

6. Sau khi hien th anh bitmap, lay khoi bo nh. Tra object cu vao bo nh. Tra lai cac bang mau trc o cua Device Context.

SV: Phan Cong Tu

Trang 27

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Chi Tiet
1. hMemDC = CreateCompatibleDC (hDC); 2. hOldPal1 = SelectPalette(hMemDC, hPal, TRUE); hOldPal2 = SelectPalette(hDC, hPal, TRUE); RealizePalette(hDC);

Ham API SelectPalette chon bang mau luan ly e dung vi Device Context. Tra ve bang mau c dung trc o vi Device Context.
HPALETTE SelectPalette( HDC hdc, HPALETTE hpal, //handle of device context //handle cua bang mau luan ly. //che o foreground/background

BOOL bForceBackground );

Ham API RealizePalette anh xa cac mau co trong bang mau logic vao bang mau hien tai cua he thong. UINT RealizePalette( HDC hdc ); // handle of device context

3. GetObject(hDDB,sizeof(bm),(LPSTR)&bm); Dung ham API GetObject e lay cac thong tin ve mot object graphic.Tuy thuoc vao object loai nao ma ham tra ve thong tin trong cau truc BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT, LOGPEN hoac la so em ch so iem
nhap (oi vi logical palette). int GetObject( HGDIOBJ hgdiobj, // handle cua graphics object can thong tin int cbBuffer, // kch thuc buffer nhan thong tin

LPVOID lpvObject //tro en vung buffer. ); 4. hOldBitmap =(HBITMAP)SelectObject (hMemDC, hDDB);

SV: Phan Cong Tu

Trang 28

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Ham API SelectObject at mot object vao Device Context c ch nh.Object mi se thay the object co trong Device Context trc o.
HGDIOBJ SelectObject( HDC hdc, HGDIOBJ hgdiobj ); 5. BitBlt(hDC, lpDCRect->left, lpDCRect->top,DCRect->right - lpDCRect>left, lpDCRect->bottom - lpDCRect->top, hMemDC, lpDDBRect->left, lpDDBRect->top, SRCCOPY); Ham API Bitblt chuyen khoi bit cua cac d lieu mau tng ng vi cac pixel trong hnh ch nhat t Device Context bo nh sang DC 6. SelectPalette (hMemDC, hOldPal1, FALSE); SelectPalette (hDC, hOldPal2, FALSE); DeleteDC (hMemDC); // handle to device context // handle to object

SV: Phan Cong Tu

Trang 29

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

3. GIAI THUAT LU ANH THANH FILE .BMP

WORD Util::SaveDIB(HDIB hDib, LPSTR lpFileName)

HDib (handle Dib)

FAlSE

TRUE Return ERR_INVALIDHANDLE Call ham CreatFile() lay the file la tr tra ve fh dung e tao file

Fh == INVALID -HANDLE_VALUE

TRUE

Return ERR_OPEN

Khoa khoi nh tro ti BITMAPINFOHEADER va tra ve a ch byte au tien : lpBI =(LPBITMAPINFOHEADER) GlobalLock(hDib)

SV: Phan Cong Tu

Trang 30

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

lpBI

ong the file : CloseHandle(fh) Return ERR_LPCK LpBI->biSize != sizeof(BITMAPIN FOHEADER)

TRUE

FALSE

Bo sung cac thong tin cua file header

M khoa khoi nh va b hkoa tren : GlobalUnlock(h Dib) ong the file : CloseHandle(fh ) Return ERR_NOT_DIB

DwDIBSize = *(LPDWORD)lpBI + PaletteSize(LPSTR)lpBI (BITMAPINFOHEADER)

(RGB QUAD)

(BITMAPINFO)

BI_RLE4 || BIRLE8 DwDIBSize += lpBI>biSizeImage

SV: Phan Cong Tu

Trang 31

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

DwBmBitsSize = WIDTHBYTES((lpBI->biWidth ) *((DWORD)lpBI->biBitCount)) * lpBI->biHeight (BITMAPDATA = chieu rong *(bits/pixel) * chieu cao) dwDIBSize += dwBmBitsSize (BITMAPINFO + BITMAPDATA) lpBI->biSizeImage = dwBmBitsSize

Bo sung thong tin cho vung BITMAPFILEHEADER : bmfHdr.bfSize = dwDIBSize + sizeof (BITMAPFILEHEADER) bmfHdr.bfReserved1 = 0; bmfHdr.bfReserved2 = 0; bmfHdr.bfOffBits=(DWORD)sizeof(BITMAPFILEHEADER) + lpBI->biSize + PaletteSize((LPSTR)lpBI) (BITMAPHEADER = BITMAPFILEHEADER + BITMAPINFOHEADER + RGBQUAD)

Write the file header : WriteFile(fh,(LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER),&dwWritten,NULL);

Write the DIB header and the bits : WriteFile(fh,(LPSTR)lpBI,dwDIBSize,&dwWritten,NULL)

Giai phong khoi nh va ong hanle file: GlobalLock(hDib) CloseHandle(fh) If (dwWritten = = 0) return ERR_OPEN else return 0; SV: Phan Cong Tu Trang 32

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

C. PHAN GIAO THC


I. NH NGHA GIAO THC SCREEN CAPTURE (GOI TAT LA SCAPP) : 1. Muc ch : Giao thc SCAPP dung e trao oi gia Client va Server. Tren o server phuc vu cac dch vu la : Capture man hnh desktop Capture ca so ang foreground. Capture ca so co ten bat ky . Capture khung ch nhat tren man hnh server. Server chay tren may co he ieu hanh Windows9x, port giao tiep la : 2908. 2. nh dang cac Request : a) CAP DESKTOPnull b) CAP WINACTInull c) CAP WINNAME string_namenull d) CAP MAXTTRIX xleft xright ytop ybottomnull e) ENDnull

Cac lenh phai c ket thuc bang ky t null (\0), la ky t ket thuc chuoi. Lenh dang chuoi ky t ASCII. Co hai lenh chnh : CAP va END vi ac iem la co chieu dai 3 bytes. oi vi cac tham so co nh nh : DESKTOP, WINACTI, WINNAME, MATTRIX. Chieu dai co nh la 7 byte. Cac tham so con lai la co chieu dai thay oi : string_name la trang ky t ch ten ca so c yeu cau, xleft, xright, ytop, ybottom la nhng gia tr so di dang chuoi, o la cac toa o goc tren trai, goc di phai cua khung hnh ch nhat . Gia lenh va tham so, gia cac tham so eu cach nhau mo dau khoang trang(space). a) CAP DESKTOPnull : yeu cau dch vu capture man hnh desktop. SV: Phan Cong Tu Trang 33

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

b) CAP WINACTInull : yeu cau dch vu capture ca so windows ang foreground. c) CAP WINNAME string_namenull : yeu cau dch vu capture ca so windows co ten la chuoi nam trong string_name. d) CAP MAXTTRIX xleft xright ytop ybottom null : yeu cau dch vu capture mot vung hnh ch nhat c gii han bi cac toa o goc tren trai va goc di phai c ch nh bi cac tham so xleft, xright, ytop, ybottom. e) ENDnull : ket thuc phuc vu. 3. nh dang cac Reply : a) ap ng cua cac lenh khi c phuc vu la : Header cua data : YESRESO:resx resy\n DATTYPE:BMP\n DATSIZE:sizeofdatanull Ket thuc phan header cung la ky t null. gia cac trng o phan giai , kieu d lieu, kch thc d lieu la ly t xuong dong (\n). Trong trng o phan giai(YESRESO) : resx, resy c canh nhau bi mot dau khoang trang, chung ch so pixel theo chieu ngang va theo chieu doc cua man hnh server. Data thc s la d lieu cua file .BMP c gi ngay sau phan header. b) Khi khong c phuc vu : Loi error se tra ve, nh dang nh sau:

NOERROR:string_errornull

String_error cha chuoi loi, cac loi co the la: Name of window is not found. Hoac Rectangle is illegal. c) Notify cua server khi o phan giai tren man hnh b thay oi :
NOTRESO:resx resynull

Nhan xet : Cac reply co chieu dai co nh la 8 bytes, SV: Phan Cong Tu Trang 34

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

thuan tien cho viec phan tch cac gia tr sau o. Ket thuc mot reply cung la ky t ket thuc chuoi( null). Rieng viec nhan data se c xac nh nh gia tr sau trng DATSIZE cua header.

4. Mot v du ve ap ng cua server khi nhan c request : a) Trng hp server co phuc vu c : Client : CAP DESKTOP\0 Server: YESRESO:600 800 DATTYPE:BMP DATSIZE:481078\0 481078 bytes data c gi ay. b) Trng hp server khong phuc vu: Client : CAP MAXTTRIX 0 100 0 900\0 Server :NOERROR:Rectangle is illegal\0

SV: Phan Cong Tu

Trang 35

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

II.

HIEN THC SERVER THEO GIAO THC SCAPP 1. X ly thong iep FD_READ :

System windows Gi message FD_READ

ung

Server ang phan tch request

sai

Bo qua thong iep lan nay

oc mot byte vao cuoi buffer ung =\0 sai Ch thong iep FD_READ ke tiep a oc xong mot request. Phan tch va phuc vu

Chi tiet : if (!Extracting)

{ nBytesRecv = recv(newsock,&BufRecv[numbytesrecv],1,0); if (nBytesRecv >0) if (BufRecv[numbytesrecv]=='\0') { numbytesrecv = 0; Extracting = TRUE ; ExtractRequest(BufRecv); } else numbytesrecv + = 1; 2. X ly thong iep FD_WRITE : Vung d lieu phai gi nam trong buffer co ten la BufSend. Viec SV: Phan Cong Tu Trang 36

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

gi d lieu co the can nhieu thong iep FD_WRITE. Do o can en bien nTotalBytesToSend e ch tong so bytes phai gi, nBytesToSend la so bytes con lai phai gi. Khi nhan c thong iep FD_WRITE, v tr bat au gi tren BufSend o la hieu so : nTotalBytesToSend nBytesToSend.

System windows hoac ng dung

Gi message FD_WRITE

nBytesToSend >0 Sai Bo qua thong iep lan nay ung Goi Send (sock, BufSend + nTotalBytesToSend nBytesToSend, nBytesToSend)

Cap nhat bien nBytesToSend = nBytesToSend so bytes va gi dc

nBytesToSend >0 ung Gi thong iep FD_WRITE, yeu cau gi tiep

BufSend nBytesToSend

SV: Phan Cong Tu

nTotalBytesToSe nd

Trang 37

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Chi tiet: if (nBytesToSend>0) { nBytesToSent = send(newsock,BufSend + nTotalBytesToSend nBytesToSend,nBytesToSend,0); if (nBytesToSent != SOCKET_ERROR) if (nBytesToSent > 0) { nBytesToSend = nBytesToSend - nBytesToSent; if (nBytesToSend >0 ) //yeu cau goi tiep PostMessage(WM_USER_NEWSOCKET,newsock,WSAMAKESELECTR EPLY(FD_WRITE,0)); else { free(BufSend); // giai phong vung d lieu a gi xong BufSend = NULL; Extracting = FALSE ;} // cho phep nhan va phuc vu request mi } } 3. X ly thong iep FD_ACCEPT : Tren server ch co mot socket c yeu cau nhan thong iep nay. Neu co thong iep FD_ACCEPT. Server tao mot socket mi bang goi ham : Newsock = accept(originalsocket,NULL,NULL) ; ong thi tao mot object window phuc vu tren socket nay, vi cac dch vu ay u cua server, o la nhan request t Client, gi reply theo giao thc SCAPP. Do o object window se co cac ac iem : + Co mot socket, o la newsocket. + Co mot ca so an, se nhan nhng thong iep bat ong bo cua newsocket. + Co cac method phuc vu cac yeu cau capture. Object nay c xay dng t lp CCapture. Chi tiet: LONG CMainFrame::P_Sock(WPARAM wParam, LPARAM lParam) { Switch (WSAGETSELECTEVENT(lParam)) { case FD_ACCEPT : newsock = accept(sock,NULL,NULL); // khong can luu lai dia chi cua client if (newsock != SOCKET_ERROR) CCapture* temp =new CCapture((CWnd*)this,newsock) Break; }

SV: Phan Cong Tu

Trang 38

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

4. Giai thuat phan tch request : Nhan request la mot chuoi ky t

oc 3 bytes

= END Sai = CAP ung oc tiep 8 bytes = DESKTOP

ung ong socket

Sai

Xay dng reply thong bao loi.

Sai = DESKTOP = WINACTI Goi ham OncapturedesktopInclu ung deme Goi ham OncaptureActivewindo ung w

Sai

= MATTRIX

ung

Sai

Sai = WINNAME

Goi ham OncaptureMattrix, vi thong so la so Goi ham bytes con lai cua OncaptureWinname, request. vi thong so la so bytes con lai cua

ung Trang 39

SV: Phan Cong Tu Xay dng reply thong bao loi.

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Chi tiet: void CCapture::ExtractRequest(LPSTR lpreq) { char* command = "END"; if (strcmp(lpreq,command)==0) return ; command = "CAP "; if (strncmp(lpreq,command,4)!=0) return; char *param[] = { "DESKTOP", "WINACTI", "WINNAME", "MATTRIX" }; int step = 0 ; int stop = 4; char message[30] ; for (step = 0 ;step <4; step ++) { if (strncmp(param[step],lpreq + 4,7 )==0) stop = step ; } switch (stop) { case 0 : OnCaptureDesktopIncludeme(); break; case 1 : OnCaptureActivewindow(); break; case 2 : SV: Phan Cong Tu Trang 40

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

OnCaptureWinname(lpreq + 11); break; case 3 : ServiceMattrix(lpreq + 11); break; default : break; } return; 5. Xay dng Reply: Se co hai trng hp khi xay dng reply: + hoac la tra ve data BMP, +hoac la tra ve error.

Co phuc vu Sai

u ng

Goi FillReply()

Goi FillError(stringerror) : Gi chuoi NOERROR stringerror

SV: Phan Cong Tu

Trang 41

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Thu tuc CCapture::FillReply() Lay o phan giai cua man hnh lu vao cac bien xScr,yScr

Lu vao buffer tam TBufSend phan header cua d lieu bao gom: o phan giai , kieu d leu, o ln cua d lieu +wsprintf(TBufSend,"YESRESO:%d %d",xScrn,yScrn); + strcat(TBufSend,"\n"); +strcat(TBufSend,"DATTYPE:BMP"); + strcat(TBufSend,"\n"); + strcat(TBufSend,"DATSIZE:"); +DWORD lenheader = strlen(TBufSend); wsprintf(TBufSend + lenheader,"%ld",ghsize);

Cap phat vung nh cho vung Buffer Send: la tong o ln phan header va o ln cua d lieu anh. BufSend = (char *)malloc(ghsize + lenheader);

Copy phan header va data vao Buffer Send + strncpy(BufSend, TBufSend, lenheader)

Phat thong iep FD_WRITE yeu cau gi tat ca data trong BufSend.

SV: Phan Cong Tu

Trang 42

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

III.

HIEN THC CLIENT THEO GIAO THC SCAPP

X ly thong iep FD_WRITE giong nh server. 1. X ly thong iep FD_READ : System windows Gi message FD_READ Sai

Isdata == TRUE u ng Goi recv nhan toi a so bytes can thiet vao BufForDIB e u trong tong so bytes data phai nhan.

Goi recv, nhan mot byte vao BufRecv.

ung Phan tch reply

== \0 Sai

Ch thong iep FD_READ ke tiep. BufferForDIB : buffer e nhan data la data cua file BMP. Isdata : Xac nh d lieu sap oc chnh la phan data cua file BMP. BufRecv : la buffer nhan cac reply, ngoai tr data. Nhan data t server : Khi a nhan header t server, luc o BufForDIB (buffer cho data) c tao ra, cac bytes c nhan vao buffer nay tr ve sau. nBytesUntilNow la so bytes nhan c en thi iem hien tai, SizeOfDIB la tong kch thc data phai nhan. BufferForDIB nBytesUntilNow SV: Phan Cong Tu SizeOfDIB

Trang 43

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Viec nhan data ket thuc khi nBytesuntilNow = SizeOfDIB. Luc nay thiet lap cac c : (Isdata = false,Extracting = false) e thong bao se nhan va phan tch mot reply khac. Sau ay la cac trng hp cho isdata va va Extracting. Isdata TRUE TRUE FALSE FALSE Extracting TRUE FALSE TRUE FALSE Nhan d lieu t lp di winsock vao BufferForDIB Nhan d lieu t lp di winsock vao BufferForDIB Khong lam g khi co FD_READ Nhan d lieu t lp di winsock vao BufRecv

Giai phap cho client capture theo chu ky: BufferForDIB se nhan c d lieu file anh BMP t lan nhan reply au tien cua server. T lan th hai tr i, BufferForDIB b thay oi th d lieu anh trc o se khong con. Do o se dung BufferForLastDIB cha d lieu file anh BMP lan capture gan nhat. Nh vay khi d lieu anh cha ve c het het th nhng lan paint man hnh, anh cu c hien th Chi tiet: if (isdata) { nBytesRecv = recv(sock,BufferForDIB + nBytesUntilNow,SizeOfDIB - nBytesUntilNow,0); if (nBytesRecv > 0) nBytesUntilNow += nBytesRecv ; if (nBytesUntilNow >= SizeOfDIB ) // { free(BufferForLastDIB); BufferForLastDIB = BufferForDIB; PostMessage(WM_USER_DISPLAYDIB,0,0); nBytesUntilNow = 0; isdata = FALSE ; Extracting = FALSE ; } SV: Phan Cong Tu Trang 44

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

else if (!Extracting) { nBytesRecv = recv(sock,&BufRecv[numbytesrecv],1,0); if (nBytesRecv >0) if (BufRecv[numbytesrecv]= ='\0') { numbytesrecv = 0; Extracting = TRUE; ExtractReply(LPSTR(BufRecv)); } else numbytesrecv += 1; } break;

User chon yeu cau t hop thoai FillRequestHere

Lay request la dang chuoi t hop thoai vao BufSend.

request la CAP MATTRIX

Sai

u ng

Kiem tra so toa o va vung 2. Xay dng Request : toa o co hp le khong Thu tuc CChildFrame::FillRequest()

ung Phat thong iep FD_WRITE e yeu cau 45 Trang gi d lieu t BufSend

SV: Phan Cong Tu

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

3. Phan tch reply:

Nhan reply la mot chuoi

oc 8 bytes

= YESRESO: Sai

ung

La header, goi phan tch header. ung

= NOTRESO: Sai

= NOERROR:

Lu o phan giai mi cua server. ung

Sai Se nhan mot reply khac. Lay thong bao loi, hien th cho user

Chi tiet : void CChildFrame::ExtractReply(LPSTR lpreply) { char *reply[] = { "YESRESO:", "NOERROR:", SV: Phan Cong Tu Trang 46

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

"NOTRESO:" }; int stop = 3; char message[30] ; for (int step = 0 ;step <3; step ++) { if (strncmp(reply[step],lpreply,8 )==0) stop = step ; } if (stop>=3) return ; switch (stop) { case 0 : ExtractHeader(lpreply +8); break; case 1 : //co loi //ExtractError(lpreply +8); AfxMessageBox(lpreply +8); isdata = FALSE ; Extracting = FALSE ; break; case 2 : ExtractNotify(lpreply +8); isdata = FALSE ; Extracting = FALSE ; break; default : break; } return; }

SV: Phan Cong Tu

Trang 47

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

PHAN BA : HNG DAN S DUNG CHNG TRNH


Ca so ng dung Client :

Ket thuc capture theo chu ky

Phong ln hnh Thu nho hnh Dch hnh sang phai, trai, xuong, len

SV: Phan Cong Tu

Trang 48

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

e ra lenh capture t xa : kich menu Remote Captue, chon Connect To

Tiep theo cho a ch IP cua Remote Host :

Chon Ok . Nh vay a thiet lap cau noi en Remote Host. Tiep theo, kch Remote Capture, chon FillRequest e ien yeu cau. Khi chon WinName, phai anh ten window ( v du:MicroSoft Word). Khi chon Mattrix phai ghi vung toa o ( v du)

SV: Phan Cong Tu

Trang 49

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

Khi chon Mattrix (v du: 0 100 50 600 ngha la left =0, right =100, top =50, bottom = 600).

SV: Phan Cong Tu

Trang 50

Luan Van Tot Nghiep : SCREENCAPTURE T XA HIEP

GVHD: NGUYEN VAN

PHAN BON : CHNG TRNH NGUON

SV: Phan Cong Tu

Trang 51

Vous aimerez peut-être aussi