intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Vu Dinh Hiep | Ngày: | Loại File: DOC | Số trang:11

106
lượt xem
20
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Loopback Adapter là một phần mềm có chức năng như card mạng. Nó là một thành phần của Windows XP Professional. 3.1.5.2 Cách cài đặt: Sau đây là cách thiết lập Loopback Adapter: - Vào Control Panel chọn Add Hardware. - Chọn Next. - Trong hộp thọai Is the hardware connected chọn Yes I have already connected the hardware sau đó chọn Next.

Chủ đề:
Lưu

Nội dung Text: Lập trình mạng bằng pocket PC-part 5

  1. Cài đặt LoopBack Adapter. Định nghĩa: Loopback Adapter là một phần mềm có chức năng như card mạng. Nó là một thành phần của Windows XP Professional. Cách cài đặt: Sau đây là cách thiết lập Loopback Adapter:  Vào Control Panel chọn Add Hardware.  Chọn Next.  Trong hộp thọai Is the hardware connected chọn Yes I have already connected the hardware sau đó chọn Next. Hình 3.24  Trong danh sách các phần cứng đã được kết nối chọn Add a new hardware device sau đó chọn Next. Hình 3.25
  2.  Trong hộp thọai kế tiếp chọn Install the hardware that I manually select from a list(Advanced) sau đó chọn Next. Hình 3.26  Trong danh sách Common hardware types chọn Network adapters sau đó chọn Next. Hình 3.27  Trong danh sách Manufacturer chọn Microsoft chọn Microsoft Loopback Adapter trong danh sách Network Adapter sau đó chọn Next.
  3. Hình 3.28  Tiếp tục chọn Next. Hình 3.29  Chọn Finish hoàn thành cài đặt Add Hardware Wizard. Cấu hình mạng:  Vào Control Panel mở Network Connections chọn Create a new connection.  Chọn next. Hình 3.30
  4.  Chọn connect to the internet; chọn next Hình 3.31  Chọn set up my connection manually. Chọn next. Hình 3.32  Chọn connect using a dial-up modem chọn next. Hình 3.33  Chọn next.
  5. Hình 3.34  Chọn next. Hình 3.35  Chọn next. Hình 3.36  Chọn finish để hoàn thành.
  6. Hình 3.37 Các bước xây dựng một ứng dụng mạng trên máy Pocket PC (sử dụng lớp CSocket): Hình 3.38 Mô hình lập trình mạng giữa Client và Server(Dùng API)
  7. Create() Create() Listen() Connect() Accept() Send() Send() and and Receive() Receive() Messages Messages Server Client Hình 3.39 Mô hình lập trình mạng giữa Client và Server(Dùng MFC) Xây dựng dịch vụ trên Server :  Sử dụng API: B1 : Khởi tạo winsock . B2 : Tạo một socket nghe ngóng kết nối vào . B3 : Gọi hàm bind() để kết buộc socket mới vừa tạo với một địa chỉ cục bộ. B4 : Gọi hàm listen() để nghe ngóng kết nối vào từ Client . B5 : Gọi hàm accept() để chấp nhận kết nối vào . B6 : Dùng các hàm send() và recv() để trao đổi dữ liệu với client . B7 : Đóng socket bằng hàm closesocket() . B8 : Làm sạch winsock .  Sử dụng MFC: B1 : Tạo một socket có cổng xác định để thiết lập dịch vụ.
  8. B2 : Gọi hàm Listen() để nghe ngóng kết nối vào từ Client . B3 : Gọi hàm Accept() để chấp nhận kết nối vào . B4 : Dùng các hàm Send() và Recieve() để trao đổi dữ liệu với client . B5 : Đóng socket bằng hàm Close() . Xây dựng ứng dụng trên Client :  Sử dụng API: B1 : Khởi tạo winsock . B2 : Tạo một socket để truy cập kết nối trên mạng B3 : Gọi hàm connect() để kết nối đến Server . B4 : Dùng các hàm send() và recv() để trao đổi dữ liệu với Server . B5 : Đóng socket bằng hàm closesocket() . B6 : Làm sạch winsock  Sử dụng MFC: B1 : Tạo một socket để truy cập kết nối trên mạng B2 : Gọi hàm Connect() để kết nối đến Server . B3 : Dùng các hàm Send() và Receive() để trao đổi dữ liệu với Server . B4 : Đóng socket bằng hàm Close(); Chi tiết các hàm sử dụng trong từng bước Sử dụng API: Client: Để sử dụng các hàm của Winsock trong ứng dụng , ta cần phải include Winsock.h vào trong mã nguồn của chúng ta , để ta có thể liên kết với thư viện winsock.lib . Khởi tạo và làm sạch winsock .
  9. Điều đầu tiên mà chúng ta cần làm để sử dụng được Winsock là cần phải bảo đảm được rằng: phiên bản đúng của winsock.dll được tải vào bộ nhớ. Đ ể làm được chúng ta gọi hàm WSAStartup(), được xác định như sau: int WSAStartup( WORD wVersionRequired , LPWSADATA lpWSAData ) wVersionRequired xác định phiên bản của Winsock mà ta muốn tải về . Đối với Pocket PC, giá trị này cần thiết cho phiên bản 1.1, đ ược tạo bằng cách dùng macro MAKEWORD(1,1). Tham số lpWSAData là một con trỏ , trỏ đến cấu trúc WSAData mà hàm WSAStartup() sẽ điền vào đó những thông tin về phiên bản của Winsock cần tải xuống. typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR *lpVendorInfo; } WSADATA; Cả hai tham số wVersion và wHighVersion sẽ trả về phiên bản hiện hành của Winsock thực sự được tải xuống bộ nhớ, thường được thiết lập là 0x0101. Hai tham số szDescription và szSystemStatus không được sử dụng trên Pocket PC và được thiết lập là NULL. Tham số iMaxSockets chỉ số lượng socket tối đa mà ứng dụng của chúng ta có thể mở ra. Không có sự bảo đảm nào cho ứng dụng của ta có thể mở những socket này. Tham số iMaxUdpDg xác định kích thước tối đa của gói UDP datagram. Nếu giá trị này là 0, thì không có giới hạn trong winsock này. Tham số cuối cùng, lpVendorInfo , là con trỏ, trỏ đến thông tin tùy chọn liên quan đến máy tính. WSAStartup() sẽ trả về giá trị 0 nếu thành công, ngược lại sẽ trả về một mã lỗi.
  10. Trước khi ứng dụng kêt thúc, chúng ta nên gọi hàm WSACleanup(), được xác định như sau : int WSACleanup(void ) ; Tuy nhiên, hàm này thực sự không làm gì hết, nó chỉ duy trì sự tương thích với những ứng dụng desktop đã được nối cổng đến Windows CE. Nếu có lỗi xảy ra khi gọi hàm winsock ( ngoại trừ gọi hàm WSAStartup(), nó sẽ trả về một mã lỗi), hầu hết những hàm sẽ trả về SOCKET_ERROR của Winsock chuẩn ( được xác định trong winsock.h, thường là -1). Để lấy những thông tin về lỗi đã xảy ra, bạn có thể gọi hàm WSAGetLastError() để tìm nguyên nhân hàm bị lỗi. int WSAGetLastError( int iError ) ; Tham số iError xác định mã lỗi mới. Chúng ta có thể tìm những thông tin về mã lỗi riêng của Winsock trong tập tin tiêu đề winsock.h. Luồng Socket : Luồng Socket có lẽ là loại giao thức truyền tin được dùng phổ biến nhất trên TCP/IP. Socket TCP cung cấp cho ta dạng ống dữ liệu (data pipe) đáng tin cậy, gần như không bị lỗi giữa hai máy, hai máy có thể gửi và nhận những luồng byte qua lại với nhau mà không có dữ liệu bị mất hay bị sao lại (dupliacate). Tạo socket : Bước đầu tiên trong việc thiết lập một kết nối mạng dùng winsock là tạo một socke. Socket là một loại dữ loại, tương tự như file handle, xác định descriptor duy nhất cho phép truy cập đến đối tượng mạng của bạn. Những thứ mà descriptor này xác định không được trình bày chi tiết trong winsock specification, mà được xác định rõ trong winsock implementation, cho nên chúng ta
  11. không thực sự biết giá trị đó có nghĩa là gì. Tuy nhiên, nội dung của desciptor là không quan trọng đối với chúng ta, điều quan trọng là chúng ta hiểu được Socket là cái mà chúng ta dùng để truy cập đến kết nối mạng của bạn. Để tạo một Socket, ta dùng hàm socket(), được xác định như sau : SOCKET socket( int af, int type, int protocol ) Tham số af thể hiện address family của giao thức, xác định loại giao thức của socket sẽ được tạo. Pocket PC hỗ trợ cả socket AF_INET hoặc AF_IRDA. Nếu bạn muốn tạo một socket cho giao tiếp hồng ngoại thì ta dùng AF_IRDA, ngược lại ta dùng AF_INET cho TCP/IP. Tham số type là loại giao tiếp của giao thức, và có thể thiết lập là SOCK_STREAM hay SOCK_DGRAM. Để tạo một Socket TCP ta dùng SOCK_STREAM và SOCK_DGRAM cho UDP. Ta cũng dùng SOCK_STREAM cho việc tạo Socket dùng giao tiếp hồng ngoại. Tham số cuối cùng, protocol, xác định loại giao thức nào dùng với socket này. Nếu bạn muốn sử dụng giao thức TCP, thì hãy dùng giá trị IPPROTO_TCP và IPPROTO_UDP dành cho giao thức UDP. Giá trị trả về của hàm này là một handle socket mới hoặc lỗi INVALID_SOCKET. Nếu bạn muốn tìm nguyên nhân vì sao bạn không thể tạo ra được socket , bạn hãy dùng hàm WSAGetLastError (). Đoạn mã sau trình bày cách tạo ra một kết nối socket. // Create a connection-oriented socket SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Check to see if we have a valid socket if(s == INVALID_SOCKET) { int iSocketError = WSAGetLastError(); return FALSE; }
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2