Tải bản đầy đủ (.doc) (11 trang)

Lập trình mạng bằng pocket PC-part 8 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (170.53 KB, 11 trang )

Chương 4 Ứng dụng minh họa
Mô tả ứng dụng minh họa:
Ứng dụng chat giữa các Pocket PC với nhau hoặc Pocket PC với máy tính để
bàn:
Mục đích:
Ứng dụng này cho phép các Pocket PC cùng lúc có thể liên lạc trao đổi
thông tin với nhau hoặc Pocket PC liên lạc với nhiều máy tính để bàn khác nhau
thông qua một máy chủ.
Chức năng:
Server:
Dùng một máy tính để bàn làm server. Server sẽ tạo một dịch vụ trên cổng
1111 cho phép các client kết nối vào. Sau khi các client kết nối thành công vào
dịch vụ mà Server đang mở, các client sẽ được yêu cầu đăng ký nick name khác
nhau để có thể liên lạc với nhau.
Client:
Client bao gồm các Pocket PC hoặc các máy tính để bàn.
Sau khi server đã mở dịch vụ, các client có thể kết nối vào dịch đó. Nếu kết
nối thành công, thì các client được phép đăng ký nick name và có thể trao đổi
thông tin được với nhau.
Ứng dụng điều khiển Power Point:
Mục đích:
Ứng dụng này cho phép chúng ta sử dụng Pocket Pc để điều khiển Power
Point ở máy chủ.
Chức năng:
Server:
Dùng máy tính làm server. Trên máy tính đang làm server sẽ đồng thời đang
chạy trình chiếu Power Point. Server sẽ nhận thông điệp từ Client( Pocket PC).
Server chỉ nhận 6 loại thông điệp, đó là: lên, xuống, đầu trang, cuối trang, số trang
bất kỳ, thoát. Từ những thông điệp này mà server sẽ điều khiển Power theo những
yêu cầu của thông điệp đó.
Client:


Sau khi server đã mở dịch vụ, client(Pocket PC) sẽ kết nối đến server. Nếu
kết nối thành công, client sẽ gửi đến server 6 thông điệp nêu trên để server xử lý.
Chi tiết các hàm liên quan đến ứng dụng:
Do đặc điểm của chương trình chat giữa Pocket PC và các máy tính để bàn
có kết nối mạng là Pocket PC có khả năng cùng lúc có thể liên lạc được với nhiều
máy tính để bàn, do đó trong ứng dụng này đòi hỏi phải sử dụng kỹ thuật lập trình
song song. Trong MFC, có hỗ trợ cơ chế đa tuyến, ở đây chúng ta chỉ đề cập đến
một vài thành phần của cơ chế đa tuyến để hỗ trợ cho ứng dụng minh họa.
Đa tuyến:
Cơ chế lập trình đa tiểu trình(MultiThread) cho phép ứng dụng có thể có
nhiều tác vụ được xử lý song song. Điều này giúp cho chương trình tăng được
hiệu quả tính toán và linh hoạt hơn trong xử lý.
Một tiểu trình cơ bản phải có hàm xử lý của tiểu trình (ThreadProc), hàm
này sẽ chứa nội dung xử lý của tiểu trình. Có thể dung một số hàm khác nhau để
tạo tiểu trình, chẳng hạn: CreateThread, _beginthread,AfxBeginThread Ở đây ta
sẽ khảo sát hàm CreateThread.
HANDLE CreateThread (
SEC_ATTRS SecurityAttributes,
ULONG StackSize,
SEC_THREAD_START StartFunction,
PVOID ThreadParameter,
ULONG CreationFlags,
PULONG ThreadId
);
Quan trọng nhất trong hàm này là tham số StartFunction, đây là hàm cài đặt
cho thread cần tạo. ThreadParameter là một biến 4 byte được truyền vào hàm
MyThread, biến pParam, nếu không cần truyền tham số, ta chỉ cần truyền NULL.
Cách kết thúc một tiểu trình.
Ngoài việc một luồng tự kết thúc khi hàm dùng để cài đặt luồng kết thúc, ta
còn có thể yêu cầu luồng kết thúc tức thời. Tuy nhiên, việc kết thúc hàm theo kiểu

“thô bạo” như vậy sẽ dẫn đến việc không hủy bỏ đúng đắn những tài nguyên đã
được cấp như mở file, kết nối mạng
Kết thúc luồng hiện hành: dùng hàm ExitThread(dwExitCode) trong đó
dwExitCode là mã lỗi trả về, thường là bằng 0.
Để kết thúc một luồng khác ta phải có handle của luồng đó (hThread) được
trả về khi tạo luồng, khi đó dùng hàm TerminateThread(hThread, dwExitCode) để
kết thúc một luồng.
Tóm lại, để tạo một tiểu trình ta cần thực hiện theo các bước cơ bản sau
đây:
 Viết một hàm xử lý cho tiểu trình
DWORD WINAPI ThreadProc(
LPVOID lp)
{
// đoạn code xử lý cho tiểu trình
return 0;
}
 Khai báo một biến kiểu HANDLE để giữ lại Handle của Thread
ví dụ: HANDLE hThread;
 Gọi hàm CreateThread
hThread = CreateThread(NULL, 0,
(LPTHREAD_START_ROUTINE)ThreadProc
NULL, 0, NULL);
if (hThread == NULL)
{
//Không tạo được Thread
}
 Khi muốn kết thúc thread ta gọi hàm TerminateThread như sau:
TerminateThread(hThread, 0);//kết thúc luồng bất kỳ.
Hoặc ExitThread(0);//Kết thúc luồng hiện hành.
Mô tả hoạt động của ứng dụng minh họa.

Ứng dụng chat giữa các Pocket PC hoặc Pocket PC với máy tính để bàn:
Hình 4.1
Server
Server
Client
Kết nối server
Nế
u
chư
a
tồn
tại
- Lưu nick.
-Thông báo thành
công. Gửi nick vừa
nhận cho các client và
ngược lại.
Nếu
kết
nối
thàn
hcô
ng
Nế
u
đã
tồn
tại
- Lưu nick tạm thời.
-Thông báo nick đã tồn

tại, gửi “exist” và nick
tạm thời.
Kiểm tra nick
-Thông điệp đến
client khác.
-Gửi thông điệp
“exit” nếu ngừng
kết nối.
Gửi thông di pệ
Tạo tuyến nhận
thông điệp
-“thanhcong”: Gán nick tạm
cho nick vừa nhận.
-“exist”:Nhận nick tạm, yêu
cầu tạo nick mới.
-“server exit”:Không thể kết
nối server.
-“nick”:Lưu nick vào danh
sách, đưa nick lên ListBox.
-“mess”:hiển thị thông điệp
lên màn hình.
-“exit”:Xóa nick vừa nhận ra
khỏi danh sách, xóa ra khỏi
ListBox.
Tạo
tuyến
xử lý
-“taonick”:chưa tồn tại: Gán nick tạm cho nick vừa
nhận.Gửi ”thanhcong” về client.Nếu tồn tại gửi “exist”
về client.

-“exit”: Xóa nick vừa nhận. Gửi “exit” và nick vừa
nhận về cho các client khác.
-Ngược lại, nhận nick client gửi, client nhận và thông
điệp. Gửi nick,”mess”, thông điệp của client gửi cho
client nhận.
Gửi về client
Tạo dịch vụ
Tạo
tuy
ến
Nh
ận
kết
nối
Ứng dụng điều khiển Power Point:
Hình 4.2
Mô tả thuộc tính, phương thức chủ yếu của ứng dụng
minh họa:
Ứng dụng chat giữa các Pocket PC hoặc Pocket PC với máy tính để bàn:
Server:
Lớp chủ yếu của Server là lớp CsocketServerDlg.
Thành phần dữ liệu chủ yếu:
Tên dữ liệu: Chức năng:
Socket skListenskAccept[100] Socket lưu thông tin Client.
SOCKET hSock[100] Handle của skListenskAccept.
HANDLE h[100] Handle của các tiểu trình.
Client_Struct Cl[100] Cấu trúc của Client(gồm nickname, số thứ tự)
ClistBox m_Danhsach ListBox thể hiện danh sách nickname client.
Cbutton m_Taodichvu Biến điều khiển nút Tạo Dịch Vụ.
Phương thức chủ yếu:

Tên phương thức Chức năng
Tiến trình
Power Point.
Server Pocket PC
Tạo dịch vụ Kết nối server.
Nếu
kết
nối
thàn
h
công
-Gửi các thông điệp: lên,
xuống, đầu trang, cuối
trang, số trang bất
kỳ ,”exit” đến server.
Nhận
kết
nối.
Tạo
tuyến
xử lý
-Nhận các thông điệp, biên dịch các thông
điệp thành mã phím tướng ứng, gửi đến
Power Point.Nếu thông điệp “exit” đóng
socket, đóng tuyến xử lý.
void OnTaodichvu Tạo dịch vụ chat.
DWORD INAPI ServiceThread Tạo tuyến chờ đợi kết nối.
void ReceiveThread Tạo tuyến xử lý các thông điệp từ client.
void OnThoatdichvu Thoát dịch vụ.
void OnThoat,void OnClose Thoát chương trình.

Client:
Lớp yếu CsocketClientDlg.
Thành phần dữ liệu:
Tên dữ liệu. Chức năng.
CSocket skSend Socket kết nối server.
tongso Lưu trữ tổng số client.
Client client[100] Lưu trữ thông tin client(nick, số thứ tự).
m_Dsctongso Tổng số người được gửi(dịch vụ Conference).
CString
m_Danhsachchon[100]
Danh sách người được chọn(dịch vụ
Conference).
BOOL m_Nhieunguo Biến xác định dịch vụ là gửi một người hay
Conference.
ClistBox m_Danhsach Listbox hiển thị nick name các client.
Cstring m_ResultString Màn hình hiển thị kết quả.
Cstring m_SendString Lưu trữ thông điệp cần gửi.
Phương thức:
Tên phương thức Chức năng.
BOOL OnInitDialog Khởi tạo giá trị mặc định.
void OnConnect Kết nối server.
DWORD WINAPI
ReceiveThread
Tuyến nhận thông điệp từ server.
DestroyWindow Xử lý sự kiện tắt cửa sổ.
OnChon Kích hoạt dịch vụ Conference.
OnThoichon Thoát dịch vụ Conference.
OnSelchangeDanhsach Xử lý sự kiện chọn trên ListBox.
Ứng dụng điều khiển Power Point:
Server:

Thành phần dữ liệu:
Tên dữ liệu Chức năng.
HANDLE h Handle của tuyến tạo dịch vụ nhận
thông điệp từ client
CsocketskServerskClient,skServerskClient Socket tạo dịch vụ và socket lưu
thông tin client.
Phương thức:
Tên phương thức Chức năng.
BOOL OnInitDialog Khởi tạo giá trị ban đầu cho dữ liệu
void OnTaodichvu Tạo dịch vụ điều khiển Power Point.
DWORD WINAPI
ReceiveThread(LPVOID lp)
Tuyến nhận thông điệp từ client.
HWND findWindowHandle Tìm Handle của các cửa sổ.
Client:
Thành phần dữ liệu:
Tên dữ liệu. Chức năng.
CSocket skClient Socket để kết nối server.
CString ServerAddress Lưu địa chỉ server.
Cstring m_So Lưu số slide cần hiển thị.
Phương thức:
Tên phương thức Chức năng.
BOOL
DestroyWindow
Xử lý sự kiện đóng cửa sổ.
BOOL OnInitDialog Khởi tạo giá trị ban đầu cho dữ liệu.
void OnKetnoiserver Kết nối server.
OnLen Di chuyển lên.
OnXuong Di chuyển xuống.
OnDautrang Di chuyển lên đầu trang.

OnCuoitrang Di chuyển xuông cuối trang.
Ongui Gửi số trang bất kỳ.
OnNgungketnoi Ngừng kết nối.
Mô tả màn hình kết quả của ứng dụng
Ứng dụng chat giữa các Pocket PC hoặc Pocket PC với máy tính để bàn:
Server:
Hình 4.3 Màn hình Server chat
 Nút Tạo Dịch Vụ: Cho phép khởi động dịch vụ chat.
 Nút Thoát Dịch Vụ: Cho phép dừng dịch vụ chat.
 Nút Thoát: Thoát khỏi chương trình.
 Listbox Danh sách: Hiển thị tất cả nick name của các client đã kết nối
thành công đến server.
 Client:
Hình 4.4 Màn hình Chat của Client trên máy tính để bàn.
 Nút kết nối Server: Hiển thị màn hình đăng nhập cho phép nhập vào địa
chỉ của Server đang mở dịch vụ.
Hình 4.5 Màn hình đăng nhập địa chỉ kết nối server.
 Nếu kết nối thành công, xuất hiện màn hình đăng nhập nick name:
Hình 4.6 Màn hình đăng nhập nick name.
Cho phép đăng nhâp nick name của client. Nick name này được dùng như
là tên gọi để các client có thể giao tiếp trao đổi với nhau.
Nếu đăng ký nick name thành công, thì trong ListBox “Danh sách” sẽ thể
hiện tất cả các nick name của các client đã kết nối đến dịch vụ.
Lúc đó, chúng ta chỉ cần click chọn một trong những nick name đó để có
thể liên lạc. Sau khi đã chọn một nick name, ta có thể nhập thông điệp vào trong
textbox bên dưới, chọn nút Gửi để gửi thông điệp.
Khi có thông điệp của client nào đó gửi đến thì bên cạnh nick name của
client đó sẽ xuất hiện thêm chữ new bên cạnh. Chúng ta chỉ cần click chọn để
xem thông điệp.
Mặt khác, chúng ta có thể click nút chọn trong nhóm Gửi nhiều người để

có thể gửi cùng lúc một thông điệp cho nhiều người.
Hình 4.7 Màn hình cho phép chọn gửi nhiều người.
 ListBox Danh sách liệt kê tất cả những nick name đang kết nối đến server.
Ta dùng các nút “>,>>,<,<<” để có thể chọn hoặc không chọn các các nick
cần gửi.
 Nút Thôi chọn để ngưng dịch vụ gửi nhiều người.
 Nút “Tạo Nick name”: Dùng để tạo nick name mới gửi đến server.
 Nút “Ngừng kết nối”: Dùng để ngừng kết nối đến server.
 Nút “Thoát”: Dùng để thoát chương trình.

×