Lập trình windows với MFC Micrisoft visual C++6.0- P11
lượt xem 30
download
MicroSoft Visual C++ 6.0 (VC) đạt được hiệu quả cao bởi không chỉ khai thác được phiên bản mới nhất của MFC mà còn nhận được
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình windows với MFC Micrisoft visual C++6.0- P11
- BOOL SystemParametersInfo ( 12.8.1 Caùc kieåu hook (Hook Type): UINT uiAction, // Soá hieäu cuûa chöùc naêng caàn thöïc hieän Hook ñöôïc phaân chia thaønh caùc kieåu khaùc nhau tuøy thuoäc vaøo kieåu UINT uiParam, // AÁn ñònh tuøy thuoäc uiAction message ñöôïc hook. Moät soá kieåu hook phoå bieán nhö sau: PVOID pvParam, // Con troû vuøng ñeäm, tuøy thuoäc uiAction WH_KEYBOARD : Hook caùc message lieân quan baøn phím. UINT fWinIni // Ñeà nghò caäp nhaät user profile. = 0: khoâng. WH_MOUSE : Hook caùc message lieân quan con chuoät. ); Laáy hoaëc ñaët thoâng soá qui ñònh tính naêng töông öùng cuûa heä thoáng. WH_CBT : Hook caùc thao taùc treân cöûa soå giao dieän. Giaù trò uiAction coù theå laø: WH_CALLWNDPROCRET : Hook giaù trò traû veà töø haøm xöû lyù message SPI_GETLOWPOWERTIMEOUT : Laáy thoâng soá low power timeout WindowProc coù kieåu CWPRETSTRUCT. SPI_GETPOWEROFFTIMEOUT : Laáy thoâng soá power timeout WH_CALLWNDPROC : Hook caùc message tröôùc khi message ñöôïc SPI_GETSCREENSAVETIMEOUT : Laáy thoâng soá S.saver timeout chuyeån ñeán thuû tuïc WindowProc. SPI_SETLOWPOWERTIMEOUT : Ñaët thoâng soá low power timeout 12.8.2 Danh saùch hook (Hook Chain): SPI_SETPOWEROFFTIMEOUT : Ñaët thoâng soá power timeout Danh saùch hook laø danh saùch caùc con troû chæ ñeán caùc thuû tuïc hook. Moãi SPI_SETSCREENSAVETIMEOUT : Ñaët thoâng soá S.saver timeout. kieåu hook coù moät danh saùch hook rieâng. Khi moät message phaùt sinh, noù ñöôïc Khi uiAction laø giaù trò coù yù nghóa laáy thoâng soá: chuyeån ñeán danh saùch hook lieân quan; töø thuû tuïc hook naøy ñeán ñeán thuû tuïc uiParam : Coù giaù trò baèng 0 hook khaùc. Moãi thuû tuïc hook coù theå tuøy nghi thöïc hieän caùc xöû lyù khaùc nhau: pvParam : Chæ ñeán vuøng ñeäm nhaän giaù trò thoâng soá hieän haønh. ghi nhaän message, chænh söûa message, hoaëc ngaên caám message khoâng ñeå noù Khi uiAction laø giaù trò coù yù nghóa ñaët thoâng soá: ñeán ñöôïc thuû tuïc hook keá tieáp. uiParam : Giaù trò thoâng soá aán ñònh. 12.8.3 Thuû tuïc hook (Hook Procedure): pvParam : = NULL Thuû tuïc hook laø chöông trình con chuyeân duïng cho vieäc hook loaïi message Ñoaïn chöông trình sau thöïc hieän caám tính naêng screen saver: lieân quan. Chöông trình con xöû lyù hook coù khai baùo nhö sau: LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, UINT oldStatus; LPARAM lParam ); // Laáy thoâng soá qui ñònh tính naêng ScreenSaver, löu vaøo oldStatus Caùc tham soá göûi cho chöông trình con naøy khaùc nhau theo töøng kieåu hook: SystemParametersInfo( SPI_GETSCREENSAVETIMEOUT, WH_KEYBOARD – xöû lyù message baøn phím - KeyboardProc: 0, &oldStatus, 0 ); // Caám tính naêng ScreenSaver code : - HC_ACTION: Message cuûa phím ñöôïc thöïc hieän. SystemParametersInfo( SPI_SETSCREENSAVETIMEOUT, - HC_NOREMOVE: Message cuûa phím chöa ñöôïc laáy khoûi 0, NULL, 0 ); message queue. … // Caùc xöû lyù trong ñieàu kieän ScreenSaver bò caám wParam: Maõ phím lieân quan. lParam : - Caùc bit 0÷15 : Giaù trò cho bieát soá laàn goõ phím // Traû laïi aán ñònh tröôùc ñoù cho tính naêng ScreenSaver : oldStatus - Caùc bit 16÷23 : Maõ scan code cuûa phím. SystemParametersInfo( SPI_SETSCREENSAVETIMEOUT, - Bit 29 : Baèng 1 neáu phím Alt ñöôïc nhaán keøm. oldStatus, NULL, 0 ); WH_MOUSE – xöû lyù message töø con chuoät - MouseProc: 12.8 BAÃY (HOOK) MESSAGE (WINDOWS HOOK): code : - HC_ACTION: Message cuûa chuoät ñöôïc thöïc hieän. Hook laø moät khaâu trong cô cheá xöû lyù message cuûa windows maø öùng duïng - HC_NOREMOVE: Message cuûa chuoät chöa ñöôïc laáy khoûi coù theå can thieäp ñeå caøi ñaët thuû tuïc xöû lyù message (hook procedure) tröôùc khi message queue. message ñoù ñeán ñöôïc ñoái töôïng xöû lyù message maø heä thoáng ñieàu phoái. wParam : Soá hieäu message cuûa con chuoät 182 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Moät soá vaán ñeà trong Windows 183
- lParam hMod : : Con troû ñeán caáu truùc MOUSEHOOKSTRUCT. Handle cuûa öùng duïng hoaëc DLL chöùa thuû tuïc hook. LRESULT CallNextHookEx ( typedef struct tagMOUSEHOOKSTRUCT { HHOOK hhk, // Handle cuûa thuû tuïc hook chieám quyeàn POINT pt; // Vò trí chæ ñieåm cuûa con chuoät int nCode, // Chuyeån giao giaù trò caùc tham soá HWND hwnd; // Handle cöûa soå lieân quan. WPARAM wParam, // maø thuû tuïc hook chieám quyeàn UINT wHitTestCode; // Xem (4.2): WM_SETCURSOR LPARAM lParam // nhaän ñöôïc töø heä thoáng ULONG_PTR dwExtraInfo; // Caùc thoâng tin boå sung khaùc. ); Thöïc hieän thuû tuïc hook bò chieám quyeàn, giuùp oån ñònh cho windows. } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT; BOOL UnhookWindowsHookEx ( WH_CBT – Xöû lyù thao taùc treân cöûa soå - CBTProc: HHOOK hhk // Handle cuûa thuû tuïc hook huûy boû. Quan heä giöõa caùc thoâng soá nhö sau: ); Huûy boû thuû tuïc hook trong danh saùch hook. Neáu thuû tuïc hook ñöôïc caøi trong DLL thì caàn söû duïng caùc haøm sau: wParam lParam Code HMODULE LoadLibrary ( HCBT_ACTIVATE Handle cuûa cöûa soå Con troû caáu truùc LPCTSTR lpFileName // Ñöôøng daãn, teân taäp tin DLL ( Kích hoaït cöûa soå ) chöùa thoâng tin. ); Traû veà giaù trò handle cuûa DLL. HCBT_CREATEWND Handle cuûa cöûa soå. Con troû caáu truùc FARPROC GetProcAddress ( ( Taïo môùi cöûa soå ) chöùa thoâng tin. HMODULE hModule, // Handle cuûa DLL chöùa thuû tuïc LPCSTR lpProcName // Teân thuû tuïc HCBT_DESTROYWND Handle cuûa cöûa soå. =NULL ); Traû veà con troû cuûa thuû tuïc töông öùng. ( Huûy boû cöûa soå ) 12.8.5 ÖÙng duïng hook messages cuûa keyboard: HCBT_MINMAX Handle cuûa cöûa soå. Word thaáp chöùa Trong phaàn naøy, ta thöïc hieän öùng duïng hook message cuûa baøn phím. Xöû lyù ( Phoùng to hay Thu nhoû thoâng soá hieån thò cöûa soå ( SW_xxx ). hook cuûa öùng duïng baät tieáng beep ñeå thoâng baùo coù goõ phím vaø chuyeån cöûa soå ) message nhaän ñöôïc cho thuû tuïc xöû lyù hook ñaõ bò xöû lyù naøy chieám quyeàn. HCBT_MOVESIZE Handle cuûa cöûa soå. Con troû caáu truùc Caùc böôùc thöïc hieän nhö sau: ( Di chuyeån hoaëc thay RECT quaûn lyù toïa Duøng MFC Wizard taïo öùng duïng Hook vôùi giao dieän chính laø dialog. ñoåi kích thöôùc cöûa soå ) ñoä, kích thöôùc môùi. Thöïc hieän caøi ñaët caùc boå sung cho lôùp dialog CHookDlg nhö sau: 12.8.4 Caùc dòch vuï lieân quan hook: - Trong phaàn caøi ñaët, boå sung bieán löu vaø haøm xöû lyù hook: HHOOK SetWindowsHookEx ( HHOOK oldHook; // Chöùa ñòa chæ thuû tuïc hook bò chieám quyeàn int idHook, // Kieåu hook HOOKPROC lpfn, // Ñòa chæ thuû tuïc hook LRESULT CALLBACK myHook ( int code, WPARAM wParam, HINSTANCE hMod, // Handle cuûa ñôn theå chöùa hook LPARAM lParam) { DWORD dwThreadId // Soá hieäu tieåu trình söû duïng hook MessageBeep( -1 ); // Thöïc hieän beep ñeå thoâng tin ); Caøi ñaët thuû tuïc hook vaøo danh saùch hook töông öùng. Haøm traû veà // Thöïc hieän thuû tuïc bò chieám quyeàn. handle cuûa thuû tuïc hook ñöôïc caøi ñaët tröôùc thuû tuïc bò chieám quyeàn. return CallNextHookEx(oldHook, code, wParam, lParam); dwThreadId : Tieåu trình söû duïng hook; =0: taát caû caùc tieåu trình. } lpfn : - Haønh vi OnInitDialog xöû lyù caøi ñaët thuû tuïc hook: Neáu thuû tuïc hook söû duïng cho taát caû caùc tieåu trình thì neân ñaët noù trong moät taäp tin DLL. BOOL CHookDlg::OnInitDialog() { 184 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com Moät soá vaán ñeà trong Windows 185
- CDialog::OnInitDialog(); oldHook = SetWindowsHookEx ( WH_KEYBOARD, /* Hook messge phím */ /* Thuû tuïc hook */ myHook, AfxGetInstanceHandle(), /* Handle tieán trình chöùa thuû tuïc xöù lyù hook */ /* Hook taát caû tieán trình */ 0 ); return TRUE; } - Haønh vi OnDestroy huûy boû thuû tuïc hook cuûa öùng duïng: void CHookDlg::OnDestroy() { UnhookWindowsHookEx(oldHook); CDialog::OnDestroy(); } Bieân dòch vaø chaïy thöû öùng duïng. 12.9 Caøi ñaët cheá ñoä thöïc hieän öùng duïng töï ñoäng: SOFTWARE\Microsoft\Windows\CurrentVersion\Run laø thaønh phaàn ñaëc bieät cuûa system registry cho pheùp töï ñoäng thöïc hieän öùng duïng khi khôûi ñoäng windows thoâng qua vieäc caøi ñaët caùc muïc coù giaù trò laø chuoãi ñöôøng daãn ñeán chöông trình öùng duïng lieân quan. Trong ñoù: HKEY_LOCAL_MACHINE\ AÙp duïng cho moïi ngöôøi duøng taïi host. HKEY_CURRENT_USER\ AÙp duïng cho moät ngöôøi duøng xaùc ñònh. Ví duï: Muïc MyProg = "C:\Game\mci.exe" caøi trong thaønh phaàn : HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run cho pheùp thöïc hieän töï ñoäng chöông trình mci.exe khi khôûi ñoäng windows. THÖÏC HAØNH: 1. Duøng (12.3) vaø (12.6), thieát keá öùng duïng audio & video player. ÖÙng duïng coù theå thu nhoû thaønh icon treân status area ñeå vöøa laøm vieäc vöøa nghe nhaïc. 2. Caøi ñaët muïc trong RUN cho pheùp thöïc hieän töï ñoäng moät öùng duïng tuøy yù. 3. HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\TypedURLs laø thaønh phaàn chöùa caùc URLs trong IE. Vieát öùng duïng xoùa moät URL baát kyø. 186 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com
- CHÖÔNG 13: keát noái maïng cuûa host. Caáu truùc packet cuûa TCP/IP ñöôïc thieát keá cho pheùp khoâng phuï thuoäc vaøo cô cheá truy xuaát cuõng nhö kieán truùc khung MFC vôùi Internet packet cuûa thieát bò maïng. Nhôø ñoù, TCP/IP coù theå laøm vieäc vôùi nhieàu kieåu maïng khaùc nhau, bao goàm caùc maïng cuïc boä (LAN): Ethernet hoaëc Token Ring; maïng dieän roäng (WAN): X.25 hoaëc Frame Relay. Söï ñoäc 13.1 GIAO THÖÙC TRUYEÀN THOÂNG TCP/IP: laäp ñoù cuõng giuùp TCP/IP nhanh choùng thích nghi vôùi caùc coâng ngheä 13.1.1 Giôùi thieäu: maïng môùi nhö ATM (Asynchronous Transfer Mode). TCP/IP (Transmission Control Protocol/Internet Protocol) bao goàm giao Taàng Internet (Internet Layer): thöùc truyeàn thoâng vaø caùc dòch vuï hoã trôï taùc vuï truyeàn thoâng giöõa caùc traïm Taàng internet ñaûm nhaän chöùc naêng ñònh vò, ñoùng goùi thoâng tin vaø (host) treân heä thoáng maïng ñònh vò ñòa chæ IP (IP Host Address Internetwork). truyeàn tin ñònh tuyeán. Giao thöùc truyeàn thoâng coát loõi cuûa taàng naøy laø IP, TCP/IP ra ñôøi töø naêm 1969 bôûi cô quan nghieân cöùu caùc döï aùn cao caáp ARP, ICMP, vaø IGMP. thuoäc boä quoác phoøng Hoa Kyø (Department of Defence Advanced Research - Giao thöùc IP (Internet Protocol): Giao thöùc truyeàn thoâng ñònh tuyeán; Projects Agency - DARPA) nhaèm muïc tieâu xaây döïng moät giao thöùc truyeàn coù nhieäm vuï ñònh vò ñòa chæ IP, taùch vaø keát caùc packet. thoâng chuaån cho vieäc phaùt trieån caùc heä thoáng maïng dieän roäng (WAN) vôùi cô - Giao thöùc ARP (Address Resolution Protocol): Coù nhieäm vuï thöïc cheá keát noái truyeàn thoâng toác ñoä cao treân cô sôû vaän duïng caùc kinh nghieäm töø hieän hoaùn chuyeån caùc giaù trò ñòa chæ moät caùch töông öùng giöõa taàng thaønh quaû phaùt trieån maïng ARPANET, tieàn thaân cuûa Internet ngaøy nay. internet (logic address) vaø taàng giao tieáp maïng (physic address). 13.1.2 Kieán truùc cuûa giao thöùc TCP/IP treân moâ hình DARPA: - Giao thöùc ICMP (Internet Control Message Protocol): Coù nhieäm vuï Moâ hình DARPA vôùi giao thöùc truyeàn thoâng TCP/IP laø moät kieán truùc bao cung caáp caùc chöùc naêng kieåm soaùt vaø thoâng baùo tình hình göûi caùc IP goàm 4 taàng töông öùng vôùi 7 taàng cuûa moâ hình maïng chuaån OSI nhö sau: packet. - Giao thöùc IGMP (Internet Group Management Protocol): Coù nhieäm vuï quaûn lyù nhoùm caùc IP packet ñöôïc truyeàn ñeán moïi host. Taàng truyeàn taûi (Transport Layer): Taàng truyeàn taûi coù nhieäm vuï cung caáp cho taàng öùng duïng caùc dòch vuï truyeàn thoâng tin theo doøng vaø theo goùi. Giao thöùc truyeàn thoâng coát loõi cuûa taàng truyeàn taûi laø TCP vaø UDP. - UDP (User Datagram Protocol): Laø giao thöùc cung caáp dòch vuï truyeàn thoâng tin giöõa moät host vôùi moät hay nhieàu host khaùc treân cô sôû ñoùng goùi thoâng tin vaø göûi ñi theo töøng packet ñoäc laäp. Giao thöùc naøy khoâng thöïc hieän kieåm tra tình hình nhaän thoâng tin ôû host nhaän tin neân ñoä tin caäy thaáp, thoâng tin coù theå bò thaát laïc. - TCP (Transmission Control Protocol): Laø giao thöùc cung caáp dòch vuï truyeàn thoâng tin treân cô sôû xaây döïng ñöôøng truyeàn (stream) giöõa hai host vaø thöïc hieän göûi-nhaän thoâng tin, ñoàng thôøi kieåm tra thoâng tin nhaän qua ñöôøng truyeàn naøy. Giao thöùc naøy ñaûm baûo thoâng tin ñöôïc Taàng giao tieáp maïng (Network Interface Layer): chuyeån ñeán host nhaän chính xaùc vaø an toaøn. Taàng giao tieáp maïng (taàng truy xuaát maïng) ñaûm nhaän nhieäm vuï nhaän Taàng öùng duïng (Application Layer): vaø göûi caùc goùi chöùa thoâng tin (packet) theo caáu truùc TCP/IP treân thieát bò MFC vôùi Internet 188 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 187
- Taàng öùng duïng cung caáp caùc chöùc naêng khai thaùc caùc dòch vuï cuûa caùc Treân 4 bytes ñòa chæ IP, ta coù theå choïn moät soá bytes tuøy yù chöùa ñòa chæ taàng khaùc, ñoàng thôøi ñònh nghóa caùc giao thöùc truyeàn thoâng maø öùng maïng, soá bytes coøn laïi duøng chöùa ñòa chæ host. Moãi caùch choïn khaùc nhau duïng cuûa ngöôøi duøng coù theå söû duïng ñeå truyeàn döõ lieäu qua heä thoáng taïo thaønh moät lôùp ñòa chæ IP. Coù 3 lôùp ñòa chæ IP phoå bieán: maïng. Caùc giao thöùc truyeàn thoâng phoå bieán nhö sau: - Lôùp A : 1 byte cho ñòa chæ maïng, 3 bytes cho ñòa chæ host - Giao thöùc HTTP (HyperText Transfer Protocol): Duøng chuyeån taûi - Lôùp B : 2 bytes cho ñòa chæ maïng, 2 bytes cho ñòa chæ host caùc taäp tin tham gia vaøo noäi dung trang WEB (World Wide Web). - Lôùp C : 3 bytes cho ñòa chæ maïng, 1 byte cho ñòa chæ host - Giao thöùc FTP (File Transfer Protocol): Duøng chuyeån taûi caùc taäp tin Löu yù: thoâng thöôøng. - Giaù trò ñòa chæ host vôùi taát caû caùc bits baèng 1 laø ñòa chæ chæ cho moïi - Giao thöùc SMTP (Simple Mail Transfer Protocol): Duøng chuyeån taûi host treân heä thoáng maïng (host broadcast address) chöùa host. Khoâng noäi dung thö tín bao goàm thoâng ñieäp vaø caùc döõ lieäu keøm theo. moät host naøo ñöôïc söû duïng ñòa chæ naøy. - Giao thöùc Telnet: Duøng cho hoaït ñoäng thaâm nhaäp host töø xa thoâng - Moät ñòa chæ IP coù phaàn ñòa chæ host vôùi taát caû caùc bits baèng 0 chính qua caùc thieát bò ñaàu cuoái (Terminal). laø ñòa chæ cuûa heä thoáng maïng. Khoâng duøng ñòa chæ naøy cho host. Beân caïnh caùc giao thöùc truyeàn thoâng noùi treân, taàng öùng duïng coøn Address Class First Host ID Last Host ID cung caáp caùc dòch vuï sau: Class A w.0.0.1 w.255.255.254 - Dòch vuï chuyeån ñoåi domain name thaønh ñòa chæ IP töông öùng. Class B w.x.0.1 w.x.255.254 - Dòch vuï cung caáp thoâng tin ñònh vò ñòa chæ IP. Class C w.x.y.1 w.x.y.254 - Dòch vuï quaûn lyù caùc thieát bò maïng (boä ñònh tuyeán, caàu noái, hub 13.1.4 Subnet: thoâng minh) nhaèm thu thaäp vaø trao ñoåi thoâng tin quaûn lyù maïng. Vôùi soá bits duøng cho ñòa chæ host trong caùc lôùp ñòa chæ, soá löôïng host cuûa 13.1.3 Ñòa chæ IP: moät heä thoáng maïng coù theå leân ñeán con soá raát lôùn (lôùp A laø 16 trieäu). Khi ñoù, Ñòa chæ IP laø giaù trò giuùp xaùc ñònh moät host duy nhaát treân heä thoáng maïng. vieäc göûi moät thoâng ñieäp leân maïng cho taát caû caùc host (broadcast) seõ caàn moät Taát caû caùc ñòa chæ IP ñeàu coù daïng thoáng nhaát bao goàm ñòa chæ maïng vaø ñòa chæ khoaûng thôøi gian thöïc hieän khoâng nhoû, khoù ñaûm baûo xöû lyù thôøi gian thöïc. Hôn cuûa host treân maïng ñoù. nöõa, 16 trieäu giaù trò ñòa chæ cho moät heä thoáng maïng laø quaù dö thöøa. - Ñòa chæ maïng (Network address - Network ID): Soá hieäu duøng cho moät Nhaèm khaéc phuïc haïn cheá noùi treân, caùc host cuøng heä maïng ñöôïc chia thaønh heä thoáng maïng caùc host cuøng chung moät ñaëc ñieåm ñònh tuyeán. Caùc heä nhoùm nhoû hôn goïi laø maïng con (SubNet). Moãi subnet töông öùng vôùi moät ñòa thoáng maïng keát vaøo internet phaûi coù ñòa chæ maïng phaân bieät. chæ maïng subnet vaø giôùi haïn ñòa chæ IP caùc host tröïc thuoäc. Ñòa chæ subnet laø - Ñòa chæ host (host address - host ID): Soá hieäu duøng cho moät host giaù trò hình thaønh töø moät phaàn bits trong ñòa chæ host cuûa ñòa chæ IP thuoäc heä (workstation, server, router, TCP/IP host). Caùc host trong cuøng moät heä maïng ban ñaàu. Coù theå xem Subnet laø taäp con cuûa heä maïng. thoáng maïng coù cuøng ñòa chæ maïng nhöng ñòa chæ host phaûi phaân bieät. Moãi ñòa chæ IP coù chieàu daøi 32 bits chia thaønh 4 bytes (4 octets). Moãi giaù trò nhò phaân trong moät byte töông öùng vôùi moät giaù trò thaäp phaân trong ñoaïn 0 ÷255. Boán giaù trò thaäp phaân naøy ñöôïc vieát ra theo thöù töï vaø ngaên caùch baèng daáu ‘.’ cho ta hình aûnh bieåu dieãn ñòa chæ IP theo daïng soá vaø daáu chaám (dotted decimal notation) maø töø ñaây ta seõ goïi taét laø num-dot. Heä thoáng maïng trong hình treân söû duïng ñòa chæ lôùp B. Ñòa chæ cuûa heä maïng IP: 11000000 10101000 00000011 00011000 laø 139.12.0.0. Heä maïng naøy cho pheùp xaùc laäp 65535 ñòa chæ host. Thöïc Hay: 192.168.3.24 MFC vôùi Internet 190 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 189
- Xaùc ñònh ñòa chæ maïng: Ñeå taùch ñòa chæ maïng töø moät ñòa chæ IP baát kyø hieän chia heä maïng treân thaønh 256 subnet döïa treân byte thöù ba, ta ñöôïc caùc subnet 8-bit ñòa chæ lôùp B: thoâng qua giaù trò subnet mask, ta söû söû duïng pheùp toaùn AND bits: Ví duï: Giaû söû IP = 129.56.189.41 vaøsubnet mask = 255.255.240.0 Ñòa chæ maïng ñöôïc xaùc ñònh nhö sau: IP Address : 10000001 00111000 10111101 00101001 Subnet Mask : 11111111 11111111 11110000 00000000 Network ID : 10000001 00111000 10110000 00000000 Xaùc ñònh giôùi haïn ñòa chæ IP: Giaû söû ñòa chæ maïng laø 192.168.0.0. Vôùi subnet 3-bit ñòa chæ lôùp B cuûa heä maïng noùi treân, ta coù 8 tröôøng hôïp löïa choïn giaù trò cho 3 bits naøy. Töông öùng vôùi moãi tröôøng hôïp laø moät giôùi haïn caùc ñòa chæ IP cuûa caùc host trong subnet: Caùc subnet ñöôïc taïo thaønh laø: 139.12.1.0, 139.12.2.0 vaø 139.12.3.0. Stt Ñòa chæ Subnet theo heä nhò phaân Giôùi haïn ñòa chæ IP 1 11000000.10101000.00000000.00000001- 192.168.0.1 - 13.1.5 Subnet Mask: 11000000.10101000.00011111.11111110 192.168.31.254 Subnet mask laø moät giaù trò 32 bits giuùp taùch giaù trò ñòa chæ maïng (hoaëc ñòa chæ subnet) vaø ñòa chæ host töø moät ñòa chæ IP baát kyø (trong moät lôùp ñòa chæ baát 2 11000000.10101000.00100000.00000001- 192.168.32.1 - kyø, caùch phaân chia subnet baát kyø). Giaù trò naøy ñöôïc xaây döïng nhö sau: 11000000.10101000.00111111.11111110 192.168.63.254 - Caùc giaù trò bit töông öùng vôùi ñòa chæ maïng coù giaù trò laø 1. 3 11000000.10101000.01000000.00000001- 192.168.64.1 - - Caùc giaù trò bit töông öùng vôùi ñòa chæ host coù giaù trò laø 0. 11000000.10101000.01011111.11111110 192.168.95.254 4 11000000.10101000.01100000.00000001- 192.168.96.1 - Giaù trò subnet mask cuõng ñöôïc bieåu dieãn döôùi daïng num-dot. 11000000.10101000.01111111.11111110 192.168.127.254 Ta coù subnet mask maëc nhieân cho caùc lôùp ñòa chæ nhö sau: 5 11000000.10101000.10000000.00000001- 192.168.128.1 - Class Bits for Subnet Mask Subnet Mask 11000000.10101000.10011111.11111110 192.168.159.254 Class A 11111111 00000000 00000000 00000000 255.0.0.0 6 11000000.10101000.10100000.00000001- 192.168.160.1 - Class B 11111111 11111111 00000000 00000000 255.255.0.0 11000000.10101000.10111111.11111110 192.168.191.254 Class C 11111111 11111111 11111111 00000000 255.255.255.0 7 11000000.10101000.11000000.00000001- 192.168.192.1 - Caùc giaù trò subnet mask do ngöôøi duøng taïo ra töông öùng vôùi moãi lôùp ñòa chæ 11000000.10101000.11011111.11111110 192.168.223.254 treân coù theå khaùc bieät so vôùi caùc giaù trò maëc nhieân vì chuùng chöùa caû giaù trò 8 11000000.10101000.11100000.00000001- 192.168.224.1 - mask treân ñòa chæ subnet. 11000000.10101000.11111111.11111110 192.168.255.254 Ví duï: 138.96.58.0 laø moät ñòa chæ subnet 8-bit lôùp B. 8 bits ñòa chæ host cuûa 13.1.6 Host domain name: heä maïng ban ñaàu ñöôïc duøng laøm giaù trò ñòa chæ subnet. Nhö vaäy subnet Teân (name) laø moät giaûi phaùp höõu hieäu cho vieäc gôïi nhôù ñòa chæ cuûa host mask söû duïng toång coäng 24 bits (255.255.255.0) ñeå ñònh nghóa ñòa chæ thay vì duøng ñòa chæ IP vôùi 4 bytes giaù trò khoù nhôù noùi treân. Teân cuûa host (Host maïng subnet. Ñòa chæ maïng subnet vaø giaù trò subnet mask töông öùng ñöôïc name) laø moät chuoãi kyù töï coù chieàu daøi toái ña 255, coù theå chöùa maãu töï, kyù soá, bieåu dieãn theo daïng num-dot nhö sau: caùc kyù töï ‘-‘ vaø ‘.’ vaø coù yù nghóa töông ñöông vôùi ñòa chæ IP trong vieäc quaûn lyù 138.96.58.0, 255.255.255.0 ñòa chæ moät host treân heä thoáng maïng internet. Coù hai daïng phoå bieán cho teân Hay: 138.96.58.0/24 (24-bit mask) cuûa host laø nick name vaø domain name: MFC vôùi Internet 192 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 191
- - Nick name: Moät nhaõn ñöôïc duøng cho moät ñòa chæ IP duy nhaát. thoâng tin yeâu caàu khoâng xaùc ñònh ñöôïc thì noù seõ chuyeån ñeán DNS server - Domain name: Teân ñöôïc hình thaønh töø caáu truùc phaân lôùp. Caáu truùc cuøng caáp khaùc, keát quaû thöïc hieän ñöôïc hoaëc khoâng thöïc hieän ñöôïc ñeàu phaân lôùp naøy ñöôïc qui ñònh phoå bieán thaønh luaät vaø ñöôïc goïi laø heä ñöôïc traû veà theo loä trình ngöôïc laïi. thoáng teân mieàn (Domain Name System – DNS) nhö sau: Trong ñoù: Teân Domain YÙ nghóa söû duïng 13.1.7 IP Routing: COM Caùc toå chöùc thöông maïi IP routing laø tieán trình xöû lyù göûi packet ñeán host nhaän döïa treân ñòa chæ IP EDU Caùc cô quan giaùo duïc, nghieân cöùu cuûa host. Tieán trình naøy xaûy ra ôû host göûi thoâng tin theo giao thöùc TCP/IP vaø GOV Toå chöùc chính phuû ôû thieát bò ñònh tuyeán (router device) nhaèm thöïc hieän quyeát ñònh löïa choïn vò trí MIL Cô quan quaân söï maø packet seõ ñöôïc chuyeån ñeán. NET cô quan quaûn lyù maïng chính Ñeå thöïc hieän quyeát ñònh treân, taàng IP tham khaûo baûng ñònh tuyeán ñöôïc löu ORG Caùc toå chöùc khaùc tröõ trong boä nhôù. Noäi dung baûng ñònh tuyeán ñöôïc khôûi taïo maëc nhieân khi INT Caùc toå chöùc quoác teá TCP/IP vöøa ñöôïc khôûi ñoäng. Caùc muïc boå sung coù theå ñöôïc thöïc hieän bôûi Caùc nhaùnh cho caùc quoác gia tröø Hoa Kyø ngöôøi quaûn trò heä thoáng maïng (WinNT router table) hoaëc thöïc hieän moät caùch Moät teân mieàn ñaày ñuû (Fully Qualified Domain Name – FQDN) chöùa töï ñoäng trong quaù trình lieân laïc vôùi caùc boä ñònh tuyeán. ñöôøng ñi töø goác ñeán ñoái töôïng tham chieáu theo trình töï phaân caáp noùi treân. Coù hai daïng phoå bieán khi göûi packet; göûi tröïc tieáp vaø göûi giaùn tieáp. Ví duï: ftpsrv.wcoast.slate.com Göûi tröïc tieáp (Direct delivery): Xaûy ra khi host nhaän vaø host göûi ñöôïc Vieäc chuyeån ñoåi giöõa ñòa chæ IP vaø Domain name ñöôïc thöïc hieän döïa treân keát noái tröïc tieáp. Thoâng tin ñöôïc ñoùng goùi ôû host göûi theo caáu truùc qui baûng chuyeån ñoåi IP-DomainName do DNS server, moät host chuyeân duïng ñònh cuûa taàng giao tieáp maïng vaø ñöôïc göûi ñi. cuûa heä thoáng maïng, quaûn lyù. ÖÙng duïng töø moät host baát kyø coù theå truy vaán Göûi giaùn tieáp (Indirect delivery): Xaûy ra khi host nhaän vaø host göûi ñöôïc baûng thoâng tin naøy thoâng qua caùc dòch vuï cung caáp bôûi windows socket. keát noái thoâng qua moät trung gian (boä ñònh tuyeán). Khi ñoù seõ coù moät quaù Windows socket truyeàn yeâu caàu cuûa öùng duïng ñeán boä phaän phaân giaûi trình göûi giaùn tieáp töø host ñeán boä ñònh tuyeán, töø boä ñònh tuyeán tröïc tieáp domain name cuûa giao thöùc truyeàn thoâng TCP/IP. Boä phaän naøy chuyeån ñeán host nhaän (hoaëc giaùn tieáp ñeán moät boä ñònh tuyeán khaùc). yeâu caàu ñeán DNS server. DNS server nhaän yeâu caàu vaø thöïc hieän; neáu MFC vôùi Internet 194 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 193
- - Interface: Thieát bò giao tieáp maïng ñöôïc söû duïng. - Metric: Chi phí cuûa tuyeán truyeàn, laøm cô sôû cho vieäc löïa choïn tuyeán toái öu. Thoâng tin cuûa muïc trong baûng ñònh tuyeán qui ñònh ñaëc ñieåm tuyeán: - Tuyeán keát noái tröïc tieáp vôùi heä thoáng maïng: Giaù trò cuûa Next Hop laø roãng hoaëc chöùa ñòa chæ IP cuûa thieát bò giao tieáp maïng. - Tuyeán keát noái trung gian vôùi heä thoáng maïng: Giaù trò cuûa Next Hop chöùa ñòa chæ IP cuûa boä ñònh tuyeán trung gian giöõa host göûi vaø host nhaän. - Tuyeán keát noái tröïc tieáp vôùi moät host cuï theå: Khi ñoù Network ID chöùa ñòa chæ cuûa host vaø giaù trò cuûa subnet mask laø 255.255.255.255. - Tuyeán maëc nhieân: Tuyeán ñöôïc söû duïng khi coù moät taùc vuï ñònh tuyeán khoâng thaønh coâng. Giaù trò cuûa network ID laø 0.0.0.0 vaø subnet mask laø 0.0.0.0. Network Address Netmask Gateway Metric Purpose Address Interface A göûi tröïc tieáp ñeán B 0.0.0.0 0.0.0.0 157.55.16.1 157.55.27.90 1 Default Route 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 Loopback Network A göûi giaùn tieáp packet ñeán router1 , router 1 göûi giaùn tieáp ñeán DirectyAttached 157.55.16.0 255.255.240.0 157.55.27.90 157.55.27.90 1 router 2, router 2 göûi tröïc tieáp ñeán C. Network Baûng ñònh tuyeán: 157.55.27.90 255.255.255.255 127.0.0.1 127.0.0.1 1 Local Host 157.55.255.255 255.255.255.255 157.55.27.90 157.55.27.90 1 Network Broadcast Baûng ñònh tuyeán ñöôïc xaùc laäp treân taát caû caùc host (node, router) vaø 224.0.0.0 224.0.0.0 157.55.27.90 157.55.27.90 1 Multicast Address ñöôïc ñaët bôûi caùc giaù trò maëc nhieân trong quaù trình khôûi ñoäng cuûa giao 255.255.255.255 255.255.255.255 157.55.27.90 157.55.27.90 1 Limited Broadcast thöùc TCP/IP. Noäi dung cuûa baûng chöùa thoâng tin veà heä thoáng caùc ñòa chæ ( Moät baûng ñònh tuyeán cuûa Windows NT ) IP treân maïng, caùch keát noái vôùi caùc ñòa chæ aáy. Xöû lyù ñònh tuyeán: Moãi khi moät goùi thoâng tin ñöôïc göûi ñi, baûng ñònh tuyeán seõ ñöôïc söû Xöû lyù ñònh tuyeán laø xöû lyù thöïc hieän löïa choïn muïc ñònh tuyeán trong duïng ñeå xaùc ñònh: baûng ñònh tuyeán vaø duøng noù cho vieäc göûi thoâng tin. Vieäc löïa choïn naøy - Ñòa chæ cuûa host nôi göûi ñeán: Neáu göûi tröïc tieáp thì ñoù chính laø ñòa ñöôïc thöïc hieän thoâng qua caùc böôùc sau: chæ cuûa host nhaän packet, ngöôïc laïi, laø ñòa chæ cuûa boä ñònh tuyeán. - Treân moãi muïc ñònh tuyeán, thöïc hieän pheùp toaùn AND giöõa ñòa chæ - Giao dieän söû duïng ñeå göûi: Bao goàm thoâng tin veà caáu truùc vaät lyù host nhaän vaø giaù trò subnet mask. Kieåm tra keát quaû naøy vôùi vaø logic cuûa thieát bò keát noái maïng ôû nôi göûi vaø nôi nhaän. Network ID ñeå ñaùnh giaù ñoä phuø hôïp (ñoä töông töï). Caáu truùc noäi dung cuûa moät muïc trong baûng ñònh tuyeán: - Choïn ra caùc muïc ñònh tuyeán coù möùc ñoä phuø hôïp cao nhaát. Trong [ Network ID, Subnet Mask, Next Hop, Interface, Metric ] caùc muïc ñònh tuyeán naøy, choïn ra caùc muïc coù chi phí tuyeán truyeàn Trong ñoù: nhoû nhaát. Cuoái cuøng, töø caùc muïc ñònh tuyeán choïn ñöôïc, muïc ñònh - Network ID: Ñòa chæ maïng töông öùng vôùi tuyeán truyeàn tin. tuyeán ñöôïc söû duïng laø muïc coøn roãi. - Subnet Mask: Giaù trò duøng taùch ñòa chæ maïng töø ñòa chæ IP. Xöû lyù ñònh tuyeán khaùc nhau treân caùc loaïi host khaùc nhau: - Next Hop: Ñòa chæ IP cuûa host trung gian keá tieáp. MFC vôùi Internet 196 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 195
- Host göûi: Packet ñöôïc göûi töø giao thöùc ôû taàng caáp cao hôn cuûa IP (TCP, Socket laø ñieåm truyeàn thoâng ñaàu cuoái cho pheùp öùng duïng göûi vaø nhaän caùc UDP, ...). Khi ñoù vai troø IP ôû host göûi nhö sau: packet qua ñöôøng truyeàn maïng. Moãi socket coù moät kieåu xaùc ñònh vaø gaén lieàn - Ñaët giaù trò cho tröôøng TTL (Times-To-Live) theo giaù trò qui ñònh cuûa vôùi moät tieán trình xöû lyù truyeàn thoâng. Coù hai loaïi socket: Stream Socket: öùng duïng taàng caáp cao hoaëc laáy giaù trò maëc nhieân cuûa heä thoáng. Cô cheá truyeàn döõ lieäu theo doøng. Datagram Socket: Cô cheá truyeàn döõ lieäu theo packet. - Xaùc ñònh tuyeán toái öu cho packet truyeàn ñi. - Neáu khoâng xaùc ñònh ñöôïc tuyeán truyeàn thì thoâng baùo loãi ñeán taàng Ñòa chæ socket laø moät giaù trò bao goàm ñòa chæ cuûa host vaø soá hieäu port truyeàn thoâng ôû caáp cao hôn. Ngöôïc laïi, thöïc hieän truyeàn theo tuyeán. maø tieán trình xöû lyù truyeàn thoâng lieân quan socket ñaõ ñaêng kyù söû duïng. Host ñònh tuyeán: Vai troø cuûa IP nhö sau: 13.2.3 Moät soá caáu truùc döõ lieäu cuûa Winsock API: Ñòa chæ num-dot cuûa host: - Kieåm tra checksum cuûa packet. Neáu sai thì huûy packet. - Kieåm tra ñòa chæ IP cuûa host nhaän treân packet. Neáu ñòa chæ naøy laø ñòa Ñöôïc bieåu dieãn bôûi moät giaù trò chuoãi coù noäi dung laø boán giaù trò soá coù chæ moät boä ñònh tuyeán thì noäi dung packet (tröø phaàn noäi dung IP ñoä lôùn baèng byte vaø ñöôïc ngaên caùch baèng daáu ‘.’ header) ñöôïc chuyeån cho giao thöùc taàng caáp cao töông öùng. Ngöôïc Ví duï: "127.0.0.1" Caáu truùc khôûi ñoäng winsock : laïi, giaûm giaù trò tröôøng TTL ñi 1; neáu giaù trò tröôøng naøy baèng 0 thì huûy boû packet vaø göûi thoâng ñieäp "ICMP Time Expired-TTL typedef struct WSAData { Expired" cho host göûi, ngöôïc laïi xaùc ñònh tuyeán göûi vaø göûi packet. WORD wVersion; Host nhaän: Vai troø cuûa IP nhö sau: WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; - Kieåm tra checksum cuûa packet. Neáu sai thì huûy packet. char szSystemStatus[WSASYS_STATUS_LEN+1]; - Neáu ñòa chæ host nhaän ghi treân packet khoâng phaûi laø ñòa chæ cuûa host unsigned short iMaxSockets; ñang xöû lyù thì huûy packet. unsigned short iMaxUdpDg; - Göûi noäi dung packet (tröø IP header) leân giao thöùc taàng cao hôn. char FAR * lpVendorInfo; } WSADATA, *LPWSADATA; 13.2 LAÄP TRÌNH TCP/IP VÔÙI WINSOCK: Winsock (Windows Socket) coù xuaát xöù töø BSD (Berkeley Software szDescription: Thoâng tin veà phieân baûn winsock ñang söû duïng. Distribution - UNIX), töông thích vôùi windows qua phieân baûn WinSock1.1. szSystemStatus: Thoâng tin veà phieân baûn heä ñieàu haønh windows. Winsock laø moät giao dieän vôùi caùc dòch vuï xaây döïng treân giao thöùc truyeàn Caáu truùc chöùa thoâng tin cuûa host : thoâng TCP vaø UDP. Thoâng qua winsock, öùng duïng coù theå trieån khai deã daøng struct hostent { caùc taùc vuï truyeàn thoâng treân taàng truyeàn thoâng cuûa moâ hình maïng. // Domain name char FAR * h_name; 13.2.1 Port: char FAR * FAR * h_aliases; // Teân duøng thay domain name Port laø khaùi nieäm ñöôïc dieãn taû baèng moät giaù trò soá (soá hieäu port) giuùp phaân short h_addrtype; // Kieåu ñòa chæ, vôùi TCP/IP laø AF_INET bieät caùc tieán trình treân cuøng moät host ñoàng söû duïng giao thöùc TCP/IP. Caùc // Kích thöôùc ñòa chæ, 4 bytes cho AF_INET short h_length; öùng duïng khaùc nhau söû duïng TCP/IP coù theå thöïc hieän ñöôïc cuøng moät luùc treân // Danh saùch ñòa chæ. Phaàn töû char FAR * FAR * h_addr_list; moät host vôùi ñieàu kieän chuùng phaûi söû duïng caùc soá hieäu port khaùc nhau. // ñaàu danh saùch h_addr_list[0] // (hay h_addr) laø ñòa chæ host. 13.2.2 Socket: } HOSTENT, *PHOSTENT; Ñòa chæ socket treân moät host: struct sockaddr { MFC vôùi Internet 198 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 197
- unsigned short sa_family; // Hoï ñòa chæ cuûa host. - Low-order byte = winsock major version number. char sa_data[14]; // Ñòa chæ (cho pheùp nhieàu loaïi ñòa chæ) - Ví duï: MAKEWORD (1, 1 ) Winsock version 1.1. } SOCKADDR ; int gethostname ( // Haøm traû veà SOCKET_ERROR neáu coù loãi char FAR *name, // Vuøng ñeäm chöùa thoâng tin Caáu truùc naøy ñöôïc töông thích bôûi SOCKADDR_IN cuûa MicroSoft: int namelen // Kích thöôùc vuøng ñeäm struct sockaddr_in { ); Laáy thoâng tin veà teân cuûa host. // Coù giaù trò laø AF_INET short sin_family; PHOSTENT gethostbyname ( // Soá hieäu port unsigned short sin_port; const char FAR *name // Tham soá chöùa teân host // Ñòa chæ IP 4 bytes cuûa host struct in_addr sin_addr; ); Haøm traû veà con troû ñeán caáu truùc HOSTENT chöùa thoâng tin cuûa host. // Chæ ñeå töông thích vôùi SOCKADDR char sin_zero[8]; int WSACleanup( ); Chaám döùt söû duïng dòch vuï winsock. } SOCKADDR_IN ; 13.3 MFC VÔÙI LAÄP TRÌNH WINSOCK: sin_addr : Ñòa chæ IP 4 bytes cuûa host, coù caùc caùch dieãn taû nhö sau: Thö vieän söû duïng: AfxSock.h struct in_addr { 13.3.1 Khôûi ñoäng Winsock: union { BOOL AfxSocketInit ( WSADATA* lpwsaData = NULL ); struct { AfxSocketInit ñaûm nhaän vieäc thöïc hieän WSAStartup khi baét ñaàu öùng unsigned char s_b1, s_b2, s_b3, s_b4; duïng vaø WSACleanup khi öùng duïng keát thuùc. Lôøi goïi AfxSocketInit ñöôïc } S_un_b; // Ñòa chæ IP baèng 4 bytes thöïc hieän trong haønh vi InitInstance cuûa ñoái töôïng quaûn lyù tieåu trình chính struct { cuûa öùng duïng. Tham soá truyeàn cho haøm coù yù nghóa nhö vôùi WSAStartup. unsigned short s_w1, s_w2; 13.3.2 Lôùp CAsyncSocket: } S_un_w; // Ñòa chæ IP baèng 2 words CAsyncSocket laø lôùp ñoái töôïng quaûn lyù socket. Baèng söï bao haøm caùc dòch unsigned long S_addr; // Ñòa chæ IP baèng 1 long vuï cuûa winsock API trong caùc haønh vi, lôùp CAsyncSocket cho pheùp taïo ra ñoái } S_un; töôïng socket hoã trôï öùng duïng moät caùch hieäu quaû trong vieäc trieån khai caùc }; hoaït ñoäng truyeàn thoâng treân taàng truyeàn taûi cuûa giao thöùc TCP/IP. 13.2.4 Moät soá dòch vuï cuûa Winsock API: Caùc haønh vi ñaëc tröng lôùp CAsyncSocket nhö sau: char FAR * inet_ntoa ( CAsyncSocket( ); Khôûi taïo ñoái töôïng socket roãng. struct in_addr in // Ñòa chæ IP 4 bytes BOOL Create ( ); Traû veà chuoãi ñòa chæ num-dot töông öùng. nSocketPort = 0, UINT unsigned long inet_addr ( nSocketType = SOCK_STREAM, int const char FAR *cp // Ñòa chæ IP num-dot lEvent = FD_READ | FD_WRITE | FD_OOB | long ); Haøm traû veà giaù trò kieåu long cuûa ñòa chæ IP 4 bytes töông öùng. FD_ACCEPT | FD_CONNECT | FD_CLOSE, int WSAStartup ( // Haøm traû veà giaù trò 0 neáu thaønh coâng lpszSocketAddress = NULL LPCTSTR WORD version, // Phieân baûn winsock ); Khôûi taïo thoâng soá ñoái töôïng socket vaø keát vôùi host ñoái taùc (neáu coù). LPWSADATA pMyInfo // Con troû caáu truùc nhaän thoâng tin. Trong ñoù: ); Khôûi ñoäng, chuaån bò cho vieäc khai thaùc caùc dòch vuï cuûa winsock. - nSocketPort : Soá hieäu port cuûa socket. Giaù trò naøy coù theå xaùc ñònh version: Chöùa soá hieäu phieân baûn winsock caàn duøng bôûi ngöôøi duøng (ví duï 2050) hoaëc ñaët baèng 0 ñeå - High-order byte = winsock minor version number. winsock tìm giuùp moät giaù trò phuø hôïp. MFC vôùi Internet 200 Laäp trình Windows vôùi MFC - Microsoft Visual C++ 6.0 - Leâ Ngoïc Thaïnh - lntmail@yahoo.com 199
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình windows với MFC Micrisoft visual C++6.0- P1
10 p | 272 | 96
-
Lập trình windows với MFC Micrisoft visual C++6.0- P2
10 p | 216 | 69
-
Lập trình windows với MFC Micrisoft visual C++6.0- P10
10 p | 165 | 46
-
Lập trình windows với MFC Micrisoft visual C++6.0- P3
10 p | 202 | 45
-
Lập trình windows với MFC Micrisoft visual C++6.0- P13
10 p | 160 | 40
-
Lập trình windows với MFC Micrisoft visual C++6.0- P5
10 p | 167 | 33
-
Lập trình windows với MFC Micrisoft visual C++6.0- P9
10 p | 138 | 33
-
Lập trình windows với MFC Micrisoft visual C++6.0- P6
10 p | 155 | 30
-
Lập trình windows với MFC Micrisoft visual C++6.0- P4
10 p | 103 | 30
-
Lập trình windows với MFC Micrisoft visual C++6.0- P8
10 p | 108 | 25
-
Lập trình windows với MFC Micrisoft visual C++6.0- P12
10 p | 144 | 22
-
Lập trình windows với MFC Micrisoft visual C++6.0- P7
10 p | 100 | 19
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn