YOMEDIA
ADSENSE
Lập trình mạng bằng pocket PC-part 8
100
lượt xem 20
download
lượt xem 20
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
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ủ.
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình mạng bằng pocket PC-part 8
- 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:
- Server Client Server Kết nối server Tạo dịch vụ Nế Tạ o u tuy kết ến nối Nh thàn Gửi thông Tạo tuyến ận hcô nhận thông diệp kết ng Kiểmntra nick điệp ối Nế -Thông điệp đến -“thanhcong”: Gán nick tạm Nế cho nick vừa nhận. client khác. u u -Gửi thông điệp -“exist”:Nhận nick tạm, yêu chư đã “exit” nếu ngừng cầu tạo nick mới. a tồn kết nối. -“server exit”:Không thể kết tồn tại nối server. tại - Lưu nick. - Lưu nick tạm thời. -“nick”:Lưu nick vào danh -Thông báo thành công. -Thông báo nick đã tồn sách, đưa nick lên ListBox. Gửi nick vừa nhận cho tại, gửi “exist” và nick -“mess”:hiển thị thông điệp các client và ngược tạm thời. lên màn hình. lại. -“exit”:Xóa nick vừa nhận ra khỏi danh sách, xóa ra khỏi ListBox. Tạo Gửi về tuyến client 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. Hình 4.1
- Ứng dụng điều khiển Power Point: Server Pocket PC Tạo dịch vụ Kết nối server. Tiến trình Nhận Nếu kết kết Power Point. nối. nối Tạo thàn tuyế h n xử công -Gửi các thông điệp: lên, lý -Nhận các thông điệp, biên dịch các thông xuống, đầu trang, cuối điệp thành mã phím tướng ứng, gửi đến trang, số trang bất Power Point.Nếu thông điệp “exit” đóng kỳ ,”exit” đến server. socket, đóng tuyến xử lý. 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 lưu thông tin Client. Socket skListenskAccept[100] Handle của skListenskAccept. SOCKET hSock[100] Handle của các tiểu trình. HANDLE h[100] Cấu trúc của Client(gồm nickname, số thứ tự) Client_Struct Cl[100] ListBox thể hiện danh sách nickname client. ClistBox m_Danhsach Biến điều khiển nút Tạo Dịch Vụ. Cbutton m_Taodichvu Phương thức chủ yếu:
- Tên phương thức Chức năng Tạo dịch vụ chat. void OnTaodichvu Tạo tuyến chờ đợi kết nối. DWORD INAPI ServiceThread Tạo tuyến xử lý các thông điệp từ client. void ReceiveThread Thoát dịch vụ. void OnThoatdichvu Thoát chương trình. void OnThoat,void OnClose Client: Lớp yếu CsocketClientDlg. Thành phần dữ liệu: Tên dữ liệu. Chức năng. Socket kết nối server. CSocket skSend Lưu trữ tổng số client. tongso Lưu trữ thông tin client(nick, số thứ tự). Client client[100] Tổng số người được gửi(dịch vụ Conference). m_Dsctongso Danh sách người được chọn(dịch vụ CString m_Danhsachchon[100] Conference). Biến xác định dịch vụ là gửi một người hay BOOL m_Nhieunguo Conference. Listbox hiển thị nick name các client. ClistBox m_Danhsach Màn hình hiển thị kết quả. Cstring m_ResultString Lưu trữ thông điệp cần gửi. Cstring m_SendString Phương thức: Tên phương thức Chức năng. Khởi tạo giá trị mặc định. BOOL OnInitDialog Kết nối server. void OnConnect Tuyến nhận thông điệp từ server. DWORD WINAPI ReceiveThread Xử lý sự kiện tắt cửa sổ. DestroyWindow Kích hoạt dịch vụ Conference. OnChon Thoát dịch vụ Conference. OnThoichon
- Xử lý sự kiện chọn trên ListBox. OnSelchangeDanhsach Ứ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 của tuyến tạo dịch vụ nhận HANDLE h thông điệp từ client Socket tạo dịch vụ và socket lưu CsocketskServerskClient,skServerskClient thông tin client. Phương thức: Tên phương thức Chức năng. Khởi tạo giá trị ban đầu cho dữ liệu BOOL OnInitDialog Tạo dịch vụ điều khiển Power Point. void OnTaodichvu Tuyến nhận thông điệp từ client. DWORD WINAPI ReceiveThread(LPVOID lp) Tìm Handle của các cửa sổ. HWND findWindowHandle Client: Thành phần dữ liệu: Tên dữ liệu. Chức năng. Socket để kết nối server. CSocket skClient Lưu địa chỉ server. CString ServerAddress Lưu số slide cần hiển thị. Cstring m_So 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ổ. Khởi tạo giá trị ban đầu cho dữ liệu. BOOL OnInitDialog
- Kết nối server. void OnKetnoiserver Di chuyển lên. OnLen Di chuyển xuống. OnXuong Di chuyển lên đầu trang. OnDautrang Di chuyển xuông cuối trang. OnCuoitrang Gửi số trang bất kỳ. Ongui Ngừng kết nối. OnNgungketnoi 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 “>,>>,
ADSENSE
CÓ THỂ BẠN MUỐN DOWNLOAD
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
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